3
當我嘗試在C#程序的運行時檢索對象的值時,得到「對象與目標類型不匹配」。PropertyInfo GetValue在遞歸過程中拋出錯誤
public void GetMyProperties(object obj)
{
foreach(PropertyInfo pinfo in obj.GetType().GetProperties())
{
if(!Helper.IsCustomType(pinfo.PropertyType))
{
string s = pinfo.GetValue(obj, null); //throws error during recursion call
propArray.Add(s);
}
else
{
object o = pinfo.PropertyType;
GetMyProperties(o);
}
}
}
我通過我的類BrokerInfo具有類型代理的一個屬性,它inturn具有特性的目的 - 名字和姓氏(所有字符串爲簡單起見)。
- BrokerInfo
- Broker
- FirstName
- LastName
我想遞歸檢查自定義類型並試圖獲得它們的值。我能夠做這樣的事情:
- Broker
- FirstName
- LastName
請幫助。
更新:能夠解決它W /的幫助下:這裏是修改後的代碼。
public void GetMyProperties(object obj)
{
foreach(PropertyInfo pinfo in obj.GetType().GetProperties())
{
if(!Helper.IsCustomType(pinfo.PropertyType))
{
string s = pinfo.GetValue(obj, null);
propArray.Add(s);
}
else
{
object o = pinfo.GetValue(obj, null);
GetMyProperties(o);
}
}
}
IsCustom是我的方法來檢查類型是否是custome類型。這裏是代碼:
public static bool IsCustomType(Type type)
{
//Check for premitive, enum and string
if (!type.IsPrimitive && !type.IsEnum && type != typeof(string))
{
return true;
}
return false;
}
能否請您張貼`Helper.IsCustomType`的代碼? – 2011-02-01 21:03:13
添加了代碼。 – 2011-02-02 19:38:52