C#:动态添加字段到类

时间:2014-05-14 04:30:11

标签: c# dynamic

我在Google上搜索但结果却是误会。
这是一个代码流程:

public class Store
{
     public dynamic GetList(List<string> propertyFields)
     {
          // Body here
          // for in list propertyFields. Such as: ["Code", "Name", "Address", ...]
          // dynamic result = ...
          // result.Code = "value", result.Name = "abc", result.Address = "homeless", result.... = "..."
          // return result
     }
}

方法返回一个动态对象 propertyFields是字段名称列表。当我在列表中传递4个字符串时,dynamic有4个属性字段值(稍后)。
当我称这种方法时:

Store store = new Store(); 
var rs = store.GetList(["Code","Name","Address"])
Console.WriteLine(rs[0].Code)

这是我的观点。
我的问题:是否可以在C#中执行此操作?

2 个答案:

答案 0 :(得分:11)

您已经混淆了dynamic,这是一个编译器功能,意味着&#34;推迟对此对象使用的类型分析,直到运行时&#34;使用ExpandoObject表示&#34;一个可以在运行时添加属性的对象&#34;。

这是一个可以理解的混乱;许多缺少静态类型检查的语言也有expando对象。

答案 1 :(得分:4)

您需要查看ExpandoObject类。

以下是您问题的更详细解答:

Dynamic class creation

What are the true benefits of ExpandoObject?