【发布时间】:2019-06-26 04:36:21
【问题描述】:
情况
我想显示多个类的所有通用属性。假设有一个具有属性“a”和“c”的类“A”,并且有一个具有属性“b”和“c”的类“B”......所以我基本上想获得属性“c”
有什么简单的方法吗?
编辑
对不起,我没有告诉我编程了什么。
我基本上有一个类列表,我想获取这些类的所有属性。
我的代码只是我尝试过的证明。
真实示例:Visual Studio
如果您选择 2 个按钮,那么您将看到这些按钮共同拥有的所有属性
代码
private void GetAllProperties(ObservableCollection<DUIElement> selecteditems)
{
if (selecteditems == null)
return;
_properties.Clear();
foreach (DUIElement item in selecteditems)
foreach (PropertyInfo property in item.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
if (property.PropertyType.Name != nameof(DPropertyViewModel))
continue;
foreach (DUIElement itemnext in selecteditems)
{
if (item.GroupName == itemnext.GroupName)
continue;
foreach (PropertyInfo propertynext in itemnext.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
if (propertynext.PropertyType.Name != nameof(DPropertyViewModel))
continue;
if (property.PropertyType.Name == propertynext.PropertyType.Name)
{
var prop = propertynext.GetValue(itemnext, null) as DPropertyViewModel;
_properties.Add(prop);
}
}
}
}
}
【问题讨论】:
-
我没有按照你的代码,因为我真的不知道你想要实现什么,但我的 Linq-Query 应该可以完成这项工作。
标签: c# reflection collections properties