在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
答案 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;