TypeDescriptor.GetProperties()によって返されるプロパティを、それらが宣言されているクラスに応じてフィルタリングします

StackOverflow https://stackoverflow.com/questions/1443314

質問

やあみんな。次のような状況があります。

TypeDescriptorを使用して特定のタイプのプロパティを取得したい。継承階層のタイプの深さは異なる場合があります。プロパティは、その親(ベース)ではなく、型自体で宣言したいだけです。問題は、TypeDescriptor.GetProperties()を呼び出すと、継承階層で宣言されたすべてのものがObjectまで返されることです。

属性で出力をフィルタリングできることだけを見ましたが、これだけのために、私のタイプのプロパティに別の属性を追加したくありません。リフレクションを介してそれらを取得し、TypeDescriptorを使用しないことは私が望むことを行いますが、いくつかのプロパティはある時点で型に動的に追加されるため、私にはオプションではありません。

アイデアはありますか?質問が明確でない場合、例を提供できます。

役に立ちましたか?

解決

ComponentType プロパティを使用してプロパティをフィルタリングできます:

var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>()
                 where p.ComponentType == x.GetType()
                 select p;

他のヒント

希望する動作を反映するために ICustomTypeDescriptor の実装を変更するだけではいいですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top