使用Reflection获取未由接口实现的对象的所有属性

Ste*_*lan 7 c# asp.net reflection

我希望能够使用反射来遍历不实现接口的对象的属性

基本上我想实现与此相反的如何使用反射来获取显式实现接口的属性?

原因是我想将对象映射到另一个对象,其中任何未由接口定义的属性都被添加到List of KeyValuePairs.

Luk*_*ley 8

使用此示例:

interface IFoo
{
  string A { get; set; }
}
class Foo : IFoo
{
  public string A { get; set; }
  public string B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后使用这个代码,我只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));
Run Code Online (Sandbox Code Playgroud)