0
我想加载一个DLL,并为每种类型显示属性名称和值。我有下面的代码,它抛出一个System.Reflection.TargetException与消息“对象不符合目标类型”。反射从DLL中的所有类型获取值
var DLL = Assembly.LoadFrom(PathToDLL);
foreach (Type type in DLL.GetTypes())
{
foreach (PropertyInfo property in type.GetProperties())
{
lstProperties.Items.Add(string.Format("{0} - {1}", property.Name, property.GetValue(DLL, null)));
}
}
我试过用GetValue()调用使用类型,DLL和null,我做错了什么?
我测试对这个DLL有一个属性:
public string TheValue{ get; set; }
感谢所有。
您需要一个类型的实例来获取实例属性的值。 – 2014-12-02 20:55:52
你不能显示一个**类**属性的值,没有一个。您只能显示**对象**属性的值。这是类和对象之间的区别很重要的地方。 – MikeSW 2014-12-02 20:57:51
当然,在程序集中可能有类型,你不能实例化(抽象类可以想到)。在实例化所有你可以使用的类型之前,你应该三思而后行,它基本上运行着你不能控制的任意代码(再次,加载任意程序集也是如此)。 – 2014-12-02 20:59:51