リフレクションを使用して、インターフェイスを実装しないオブジェクトのプロパティをループできるようにしたい
基本的に、これの反対を達成したいのですが、リフレクションを使用して、インターフェイスを明示的に実装するプロパティを取得するにはどうすればよいですか?
その理由は、インターフェイスによって定義されていないプロパティがリストの代わりに追加される別のオブジェクトにオブジェクトをマップしたいからですKeyValuePairs
。
リフレクションを使用して、インターフェイスを実装しないオブジェクトのプロパティをループできるようにしたい
基本的に、これの反対を達成したいのですが、リフレクションを使用して、インターフェイスを明示的に実装するプロパティを取得するにはどうすればよいですか?
その理由は、インターフェイスによって定義されていないプロパティがリストの代わりに追加される別のオブジェクトにオブジェクトをマップしたいからです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));