1

System.CodeDOMAPI を介して情報を抽出するコードを生成するために、使用しているパブリック API のアセンブリにリフレクションを使用しています。

自動生成されたコードの一部で、API アセンブリ内の型の多数のプロパティの値を参照しています。ただし、生成されたコードに実際には存在しないプロパティへの参照が発生し続けます。私Type.GetProperties()が理解していることから、パブリックプロパティのみを返す必要があるものを使用しました。

さらに調べたところ、プロパティが不足している場合、呼び出さSamplePropertyれたクラスには代わりに2つのメソッドがあり、実際のプロパティはget_SamplePropertyありませんでした。set_SamplePropertySampleProperty

何が起きてる?インテリセンスがこれらのメソッドを個別のメソッドとして扱うのに、リフレクションを通じて返されたときにプロパティとして表示されるのはなぜですか?

4

1 に答える 1

5

私はPropertyInfo.GetProperties()を使用しましたが、これは私が理解していることから、パブリックプロパティのみを返す必要があります。

これが最初のハングアップかもしれません。PropertyInfoクラスにはGetPropertiesメソッドがありません。Typeクラスはそうします。それ以外の場合、質問は、実際にType.GetMethods()を使用していることを示しています。はい、プロパティのget_Blahおよびset_Blahプロパティアクセサーメソッドを返します。内部的には、プロパティは実際にはメソッドとして実装されます。

Type.GetProperties()を使用してプロパティを反映します。

于 2010-12-03T02:04:34.293 に答える