相关疑难解决方法(0)

C#匿名类可以实现一个接口吗?

是否可以使用匿名类型实现接口.我有一段我想要工作的代码,但不知道该怎么做.

我有几个答案要么说不,要么创建一个实现接口的类构造新的实例.这不是很理想,但我想知道是否有一种机制可以在界面上创建一个瘦动态类,这将使这个变得简单.

public interface DummyInterface
{
    string A { get; }
    string B { get; }
}

public class DummySource
{
    public string A { get; set; }
    public string C { get; set; }
    public string D { get; set; }
}

public class Test
{
    public void WillThisWork()
    {
        var source = new DummySource[0];
        var values = from value in source
                     select new
                     {
                         A = value.A,
                         B = value.C + "_" + value.D
                     };

        DoSomethingWithDummyInterface(values);

    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types

443
推荐指数
7
解决办法
15万
查看次数

C#4.0中使用的"动态"类型是什么?

C#4.0引入了一种名为"dynamic"的新类型.这听起来不错,但程序员会用它做什么?

有没有可以节省一天的情况?

.net c# dynamic c#-4.0

218
推荐指数
5
解决办法
14万
查看次数

具有字典属性的C#匿名对象

我正在尝试将字典转换为匿名类型,每个键都有一个属性.

我尝试谷歌它,但我能找到的是如何将匿名对象转换为字典.

我的字典看起来像这样:

var dict = new Dictionary<string, string>
{
    {"Id", "1"},
    {"Title", "My title"},
    {"Description", "Blah blah blah"},
};
Run Code Online (Sandbox Code Playgroud)

我想返回一个看起来像这样的匿名对象.

var o = new 
{
    Id = "1",
    Title = "My title",
    Description = "Blah blah blah"
};
Run Code Online (Sandbox Code Playgroud)

所以我希望它循环遍历字典中的每个keyValuePair并在对象中为每个键创建一个属性.

我不知道从哪里开始.

请帮忙.

c# dictionary object

24
推荐指数
2
解决办法
2万
查看次数

访问C#匿名类型对象

如何访问其声明范围之外的匿名类型的对象?

例如

void FuncB()
{
var obj = FuncA();
Console.WriteLine(obj.Name);
}

??? FuncA()
{
var a = (from e in DB.Entities
where e.Id == 1
select new {Id = e.Id, Name = e.Name}).FirstOrDefault();

return a;
}
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types

12
推荐指数
2
解决办法
1万
查看次数

将ExpandoObject强制转换为匿名类型

我可以将ExpandoObject强制转换为匿名类型吗?

var anoObj = new { name = "testName", email = "testEmail" };

dynamic expandoObj = new System.Dynamic.ExpandoObject();

// Here I'm populating the expandoObj with same property names/types in anonymoustype(anoObj)

// Now, how to convert this ExpandoObject to anonymoustype ?

var newObj = (typeof(anoObj)expandoObj); // This doesn't work
Run Code Online (Sandbox Code Playgroud)

稍后添加

//这是我的实体

public class Customer
    {
        #region Public Properties

        [ColumnAttribute(Name = "IdColumn")]
        public string Id { get; set; }

        [ColumnAttribute(Name = "NameColumn")]
        public string Name { get; set; }

        [ColumnAttribute(Name = "AddressColumn")] …
Run Code Online (Sandbox Code Playgroud)

c# generics anonymous-types expandoobject

12
推荐指数
2
解决办法
2万
查看次数

匿名类数组和对象数组有什么区别?

我不明白之间的差别Anonymous Class,并object Class

如果我有一个匿名类型对象:

var x = new []
        {
            new {name = "x", phone = 125},
            new {name = "f", phone = 859},
            new {name="s",phone=584}
        };
Run Code Online (Sandbox Code Playgroud)

我可以看到我如何迭代它并获得这些属性的值 x.name ...

但如果我改成这个 object

var x = new Object[]
        {
            new {name = "x", phone = 125},
            new {name = "f", phone = 859},
            new {name="s",phone=584}
        };
Run Code Online (Sandbox Code Playgroud)

那么如果我循环通过它我将无法访问属性?我已经尝试了不同的方法来从这个对象获取值,但我失败了,可能是我错过了什么?什么是生成点,object array我该如何消费呢?

我知道我不能做这样的事情: new Object[] {name = 'x' ...

c#

6
推荐指数
1
解决办法
171
查看次数

解析匿名类型

我的 API 返回一个object, 填充了匿名类型。我可以GET通过 HTTP 并解析为 json。
但是......我对同一方法的单元测试无法解析匿名类型。
使用 Dotnet 框架 4.7.2。

下面的代码显示了一个项目中
的调用者和另一个项目中的被调用者,
有 2 次不同的失败尝试。第二个是从 SO这里复制的,没有评论它不起作用。但是……不适合我。

错误信息是:

System.InvalidCastException:无法将
类型为“<>f__AnonymousType1`2[System.String,System.String]”的对象转换
为类型“<>f__AnonymousType0`2[System.String,System.String]”。

在哪里可以看到类型是不同的。
但是 IIRC 前段时间有一个 dotnet 更新解决了这个问题,让它们“平等”。


我试图通过从 dotnet 框架 web api 返回匿名类型来解决用例。
(还有其他解决方案,如动态、反射、类型或更多端点,但这是另一个问题)
请注意,此测试用例不涉及 HTTP,它纯粹是 dotnet 框架问题。

WebAPI(项目1):

public class MyController: ApiController
{
    public object Get(string id)
    {
        return new { Key = id, Value = "val:" + id };
    }
}
Run Code Online (Sandbox Code Playgroud)

测试(项目 2):

[Fact]
public void MyTest
{ …
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types

5
推荐指数
1
解决办法
170
查看次数

迭代List <object>

如何遍历Object类型的List?

List<object> countries = new List<object>();
countries.Add(new { Name = "United States", Abbr = "US" , Currency = "$"});
countries.Add(new { Name = "Canada", Abbr = "CA", Currency = "$" });
...more
Run Code Online (Sandbox Code Playgroud)

我想在我的视图中做一些事情(使用属性名称)

@model ViewModel
@foreach(object country in Model.Countries)
{
    Name = country.Name
    Code = country.Abbr
    Currency = country.Currency
}
Run Code Online (Sandbox Code Playgroud)

更新:忘了提到我正在使用MVC,我想在View中循环数据.States对象是ViewModel要查看的强类型属性之一.

更新:按要求更新以显示如何从控制器调用View -

[HttpPost]
public ActionResult Index(FormCollection form)
{
..some validations and some logic
ViewModel myViewModel = new ViewModel();
myViewModel.Countries = GetCountries(); -- this is where data get initialized
myViewModel.Data …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

4
推荐指数
2
解决办法
4万
查看次数

从类型 Object 转换匿名类型

我正在尝试使用 .NET 4.0 中的 System.Runtime.Caching.MemoryCache 类。我有一个通用的方法,因此我可以将任何类型传递到内存缓存中,并在调用时将其取回。

该方法返回一个 object 类型的对象,该对象是具有包含缓存对象的字段 Value 的匿名类型。

我的问题是,如何将要返回的对象转换为其相应的类型?

下面是我的代码...

public static class ObjectCache
{
    private static MemoryCache _cache = new MemoryCache("GetAllMakes");

    public static object GetItem(string key)
    {
        return AddOrGetExisting(key, () => InitialiseItem(key));
    }

    private static T AddOrGetExisting<T>(string key, Func<T> valueFactory)
    {
        var newValue = new Lazy<T>(valueFactory);
        var oldValue = _cache.AddOrGetExisting(key, newValue, new CacheItemPolicy()) as Lazy<T>;

        try
        {
            return (oldValue ?? newValue).Value;
        }
        catch
        {
            _cache.Remove(key);
            throw;
        }
    }

    /// <summary>
    /// How can i access Value …
Run Code Online (Sandbox Code Playgroud)

.net c# generics memorycache

4
推荐指数
1
解决办法
3531
查看次数

将匿名类型的List <object>转换为Dictionary <string,SortedList <DateTime,double >>

我有一个函数创建一个本地List<object>,其中对象是一个匿名类型.我需要返回这些结果Dictionary<string, SortedList<DateTime, double>>.

数据列表如下所示.

{ Security = "6752 JT", Date = {1/17/2011 12:00:00 AM}, zScore = 1 }
{ Security = "6753 JT", Date = {1/17/2011 12:00:00 AM}, zScore = 2 }
{ Security = "6754 JT", Date = {1/17/2011 12:00:00 AM}, zScore = 3 }
{ Security = "6752 JT", Date = {1/18/2011 12:00:00 AM}, zScore = 1 }
{ Security = "6753 JT", Date = {1/18/2011 12:00:00 AM}, zScore = 2 }
{ Security …
Run Code Online (Sandbox Code Playgroud)

c# linq dictionary

3
推荐指数
1
解决办法
3538
查看次数

如何从对象获取属性?

我创建了一个具有布尔属性和集合的对象.

我所做的:

我有一个在post上调用的方法,后者又调用另一个返回对象的方法.我的问题是我没有得到对象属性.

public object methodThatReturnsAnObject(string a, string b)   
{
    object data = new {isSaved = false, personsToCredit = ""}

    // perform my code and if all is valid i set values to my object properties and return the object

    data = new {isSaved = valid, personsToCredit = persons }

    return data;    
}
Run Code Online (Sandbox Code Playgroud)

我的另一种方法:

object Information = methodThatReturnsAnObject(string a, string b);
Run Code Online (Sandbox Code Playgroud)

我的问题是什么?当我调试Information对象包含我想要获取的两个属性但是当我键入Information.isSaved它时它说信息不包含定义isSaved

c# asp.net

1
推荐指数
1
解决办法
104
查看次数