0

質問があります: 参照されたフィールドで属性を取得するエレガントな方法はありますか? すなわち:

public class C1: Base
{
    [MyAttribute]
    public string Field1;
}
public class Base
{
    private void Do(ref string field)
    {
          if (field has attributes)
              DoSomething();
    }
} 

メソッド Do() でフィールドの属性を取得するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

0

ref string field署名でそれを行う方法はありません。属性は、「インスタンス」ではなく、宣言 (フィールド、クラス、イベントなど) に適用されます。

あなたができることは、次のようにメソッドを変更することです:

private void Do(Type fieldContainingType, string fieldName, ref string field)

次に、リフレクションを使用して検査fieldContainingTypeし、という名前のフィールドにどの属性が適用されているかを確認しますfieldName。ただし、このアプローチは非常に壊れやすく、一般的に非常に悪いものです。

于 2010-02-10T13:51:24.790 に答える