我希望能够使用反射循环遍历不实现接口的对象的属性
本质上,我想实现与此相反的How do I use reflection to get properties explicitly implementing an interface?
原因是我想将对象映射到另一个对象,其中任何未由接口定义的属性都将添加到KeyValuePairs
列表中。
最佳答案
使用此示例:
interface IFoo
{
string A { get; set; }
}
class Foo : IFoo
{
public string A { get; set; }
public string B { get; set; }
}
然后使用这个代码,我只得到
PropertyInfo
的B
。 var fooProps = typeof(Foo).GetProperties();
var implementedProps = typeof(Foo).GetInterfaces().SelectMany(i => i.GetProperties());
var onlyInFoo = fooProps.Select(prop => prop.Name).Except(implementedProps.Select(prop => prop.Name)).ToArray();
var fooPropsFiltered = fooProps.Where(x => onlyInFoo.Contains(x.Name));