我可以获得像
这样的PropertyValuesType mytype=typeof(TextBox);
foreach(PropertyInfo myinfo in mytype.GetProperties())
{
ListBox1.Items.Add(myinfo.Name);
}
但有些属性有孩子如何找到I属性的子属性?
(示例Devexpress LookUpEdit组件DataSource,属性下的DisplayMember e.t.c属性)谢谢
答案 0 :(得分:2)
为PropertyInfo.PropertyType.GetProperties执行相同的循环(递归)
答案 1 :(得分:1)
您可以使用PropertyType
属性查找属性的类型,然后以检查TextBox
的属性的相同方式,您可以检查这些子属性。
Type mytype=typeof(TextBox);
foreach(PropertyInfo myinfo in mytype.GetProperties())
{
ListBox1.Items.Add(myinfo.Name);
if(myinfo.Name == "Parent")
{
PropertyInfo subProperty = typeof(Control).GetProperty("Name")
if(subProperty != null)
// Do some more stuff here
}
}
答案 2 :(得分:1)
您需要访问myinfo对象的PropertyType属性,然后使用GetProperties()从那里获取子属性。
foreach(PropertyInfo myinfo in mytype.GetProperties())
{
ListBox1.Items.Add(myinfo.Name);
foreach(PropertyInfo mychildren in myinfo.PropertyType.GetProperties())
{
//do whatever with them
}
}
答案 3 :(得分:1)
对一个获取属性并返回propertyinfo
的方法进行递归调用答案 4 :(得分:1)
您想获取属性信息的类型,然后获取与该类型相关联的属性。
例如:
PropertyInfo info = GetType().GetProperties()[0];
Type inner = info.GetType();
inner.GetProperties();
编辑: 我最初说的是info.GetType(),但实际上没有确定是对的,我道歉。只要你知道你期望什么,那么你就不需要任何递归
更简单的事应该可以正常工作:
PropertyInfo[] infos = typeof(SomeClass).GetProperties();
//Find the Property you are looking for
PropertyInfo propertyWithMoreProperties = ....
PropertyInfo[] moreInfos = propertyWidthMoreProperties.PropertyType.GetProperties();
答案 5 :(得分:0)
你可以打电话
myInfo.PropertyType().GetProperties();
获取所有属性