【发布时间】:2017-09-08 11:46:10
【问题描述】:
所以我创建了一个继承 DynamicObject 的类
public class MyDynamicObject : DynamicObject{
private Dictionary<string, object> Fields = new Dictionary<string, object>();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return Fields.TryGetValue(binder.Name, out result);
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
Fields[binder.Name] = value;
return true;
}
}
在这里调用这个类
public class Program
{
public static void Main()
{
dynamic person = new MyDynamicObject();
person.firstname = "Hello";
Console.WriteLine(person.firstname);
}
}
当然可以。但我需要从像
这样的字符串数组创建属性string[] fields = new string[]{"taxid","newcol","addrs","gender"};
dynamic person = new MyDynamicObject();
foreach(var f in fields)
{
person.f = "hello";
}
所以输出将是 person.taxi、person.newcol、person.addrs、person.gender
这可能吗?
【问题讨论】:
-
看看内置的ExpandoObject;本质上,您必须公开一种向字典添加字段的方法。
-
我想你的问题可能会在stackoverflow.com/a/4938442/1462295得到回答
-
关于第一个评论者所说的,为什么不直接用字典来做呢?人[f] =“你好”
-
我已经使用 ExpandoObject 和它的工作做了它,但我的要求是创建一个具有动态属性并且可以实例化的类,我不知道它是否可能
标签: c# dynamicobject