【发布时间】:2013-08-24 13:44:20
【问题描述】:
我广泛使用foovar.GetType().GetProperty("PropertyName").GetValue(foovar) 通过反射获取变量变量的属性值。但它似乎不适用于接口类型。
IFoo foo = GetFoo();
string fooName= foo.Name; //It works perfectly
我正在与第三方程序集合作,因此我无权访问实施。有一个“名称”属性,我可以获得值。但不能通过反射。
当我尝试string s = (string)foo.GetType().GetProperty("Name").GetValue(foo); 时,我得到一个空错误:没有“名称”属性
我检查了PropertyInfo[] pi = foo.GetType().GetProperties();,我可以看到大约 200 个属性,这些都不是“名称”。事实上,许多其他“智能感知属性”并没有出现。
¿如何检索接口类型的属性值?
谢谢!
【问题讨论】:
-
为什么需要反射?您是否尝试过使用 ILSpy、dotPeek 或 Reflector 来查看实现?
-
我有需要在运行时访问的类型至极属性。它有很多,不同类型。我通过数据库或 XML 获取每次需要使用的属性名称和属性类型,然后使用反射和泛型获取值。
标签: c# reflection interface