我无法获取嵌套对象属性。对于我正在使用的示例,我有2个类:
public class user
{
public int _user_id {get; set;}
public string name {get; set;}
public category {get; set;}
}
public class category
{
public int category_id {get; set;}
public string name {get; set;}
}
那里很简单,如果我反映其中任何一个,我会得到正确的 GetProperties()集合,例如,如果我这样做:
PropertyInfo[] props = new user().GetType().GetProperties();
我会获取 user_id ,名称和类别的属性,如果我这样做:
PropertyInfo[] props = new category().GetType().GetProperties();
我会获得 category_id 和类别的属性;这很好用。 但是,这是我感到困惑的地方......
如您所见,类别是用户的最后一项属性,如果我这样做
//this gets me the Type 'category'
Type type = new user().GetType().GetProperties().Last().PropertyType;
//in the debugger, I get "type {Name='category', FullName='category'}"
//so I assume this is the proper type, but when I run this:
PropertyInfo[] props = type.GetType().GetProperties();
//I get a huge collection of 57 properties
知道我搞砸了吗?可以这样做吗?
答案 0 :(得分:4)
通过type.GetType()
,你得到的是typeof(Type)
,而不是属性类型。
只做
PropertyInfo[] props = type.GetProperties();
获取您想要的属性。
但是,您应该按照名称而不是按订单查找属性,因为订单不能保证符合您的预期(参见documentation):
GetProperties方法没有 返回特定的属性 顺序,如字母或 申报单。你的代码一定不能 取决于其中的顺序 属性被返回,因为那 订单各不相同。
答案 1 :(得分:2)
从类型中删除GetType()。您正在查看Type类型本身的属性。