【发布时间】:2014-05-21 11:45:29
【问题描述】:
我正在加载一个在运行时生成的程序集,其中包含一个需要设置多个属性的类。
根据我的研究,我发现使用反射可以做到这一点,因此这是我加载程序集的方式:
Assembly a = Assembly.LoadFrom("ClassLibrary1.dll");
Type t = (Type)a.GetTypes()[0];
现在我正在尝试以这种方式定义属性:
object ClassObj = Activator.CreateInstance(t);
PropertyInfo p= t.GetProperties()[0];
int x=1;
p.SetValue(ClassObj,x);
这对我来说似乎不可行,所以我想到了使用“动态”类型。
dynamic ClassObj = Activator.CreateInstance(t);
ClassObj.soma = 1;
不幸的是,这似乎不起作用。
它指出:
'object' does not contain a definition for 'soma'
无论如何我可以将类映射到动态变量中吗?
编辑:
动态 ClassObj 的字段显示“soma”属性
【问题讨论】:
-
ClassObj的Soma属性是否公开? -
是的。这是一个简单的测试类: public int soma { get;放; }
-
dynamic区分大小写,您确定您的属性名称不是Soma吗? -
属性“Soma”是公开的。课堂没有。我现在可以按照我想要的方式映射类。
标签: c# dynamic reflection runtime