2009-08-21 14 views
1

属性コンストラクタ内から、属性が関連するプロパティの型を判断しようとしています。より具体的に私はプロパティを含むクラスを探しています。C#属性PropertyType Reflection

私の現在のコンストラクタは次のようになります。私はそれが見えるようにしたいしかし

public IndexedCategoryAttribute(Type DefiningClass, String HeaderText, int Index) 
    { 

     this._definingClass = DefiningClass; 

public IndexedCategoryAttribute(String HeaderText, int Index) 
    { 

     PropertyInfo Info = ??? 
     this._definingClass = Info.DeclaringType; 

私は、これは現在それであるため、属性のユーザーのためのより安全なコードを提供すると信じています属性定義に 'typeof(MyClass)'が必要です。これは、間違った型の賢明さを開きますか?

詳細については、私はこのプロパティグリッドでこれを使用しています。この型は、カテゴリを関連するクラスにグループ化するためにstatic Dictionary<Type, Dictionary<String, int>>で使用されます。

+0

何かを検討する - マイクロソフトでは、Visual Studio 2010自体のXceedのDataGridを使用しています。 –

+0

これはどのように質問に関連していますか? –

答えて

3

属性をインスタンス化すると、属性が関連付けられている型またはプロパティを知ることはできません。

関係は他の道を行く:

  • プロパティは
  • 種類が
  • 方法は

属性がタイプ "を持って" いない属性を持つ属性を持つ属性を持っています。

グリッドを構築するときは、提案した方向とは逆の方向にスキャンを実行する必要があります。セットの各タイプについて、そのタイプに関連付けられた属性を判別する(またはプロパティーの属性に潜む)ことを反映させることができ、それらの属性がカテゴリー属性である場合は、辞書に追加することができます。

+0

ありがとう、私はすべての属性を属性内のインデックスと関連付けることができることを期待していましたが、実際には型記述子でそれを行うことができます –