如何创建C#动态对象?

时间:2017-03-24 06:16:56

标签: c# linq object dynamic

在C#中,我需要创建一个返回一个对象的函数,该对象可能包含:

{ itemID: "A1", itemDesc: "apple" } 

OR

{ groupID: "G1", groupDesc: "group1" } ..etc

// Please don't be concerned about why don't create another function for this,
// or why don't consider 'ID' instead.

我很好奇。原因是,这在javascript中很简单,因为您可以在不预先定义对象的情况下将任何键分配给对象。

然而,谈到C#,我很困惑。

这可能吗?

修改

对不起我应该更清楚地说明问题(因此可能不是'重复')

我的函数实际上返回一个Class,如下所示:

public class MyClass 
{
    public int myKey {get;set;}
    public List<customClass> listRecord {get;set;}
}

customClass是我所指的动态“对象”。 请注意,从LINQ查询记录。

感谢您的建议,但我似乎无法做到这一点:

var result = (from a in db.MyTable
              select new System.Dynamic.ExpandoObject()
              {
                 ....

我都不能select new dynamic

3 个答案:

答案 0 :(得分:0)

对于动态类型,C#有一个dynamic关键字,但强烈建议不要使用动态类型。静态类型允许您检查编译类型并快速失败。

public dynamic Func()
{
    return new { itemID = "A1", itemDesc = "apple" };
}

答案 1 :(得分:0)

您可能需要ExpandoObject类:

dynamic temp = new ExpandoObject();
temp.member1= "aha";
temp.member2= 1234;

https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx

匿名类一旦定义就无法更改.ExpandoObject更接近javascript对象。

答案 2 :(得分:0)

你可以使用动态关键字:

public dynamic GetMyObject()
{
    return new { X= "X", Y= "Y" };
}

您可以将其与

一起使用
dynamic myObject=GetMyObject();
myObject.X;
myObject.Y;