当我尝试在 C# 程序的运行时检索对象的值时,我收到“对象与目标类型不匹配”。
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 的一个对象,该对象具有一个 Broker 类型的属性,该属性又具有属性 - FirstName 和 LastName(为简单起见,所有字符串)。
- BrokerInfo
- Broker
- FirstName
- LastName
我正在尝试递归检查自定义类型并尝试获取它们的值。我可以做类似的事情:
- Broker
- FirstName
- LastName
请帮忙。
更新:在 leppie 的帮助下能够解决它:这是修改后的代码。
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 是我检查类型是否为自定义类型的方法。这是代码:
public static bool IsCustomType(Type type)
{
//Check for premitive, enum and string
if (!type.IsPrimitive && !type.IsEnum && type != typeof(string))
{
return true;
}
return false;
}