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