質問

私は疑問を持っています: 参照フィールドの属性を得るためのエレガントな方法はあります。 すなわち:ます。

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

どのように私は()メソッドドゥ内のフィールドの属性を取得できますか?

事前に感謝します。

役に立ちましたか?

解決

あなたはref string fieldシグネチャを持つことを行うことができる方法はありません。属性はない「インスタンス」に、(フィールド、クラス、イベントなど)の宣言に適用されます。

は、<全角>内容のことができません、このようなあなたの方法を変更されます:

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

、次に見ることfieldContainingTypeを検査するためにリフレクションを使用して、どのような属性は、名前のfieldNameをフィールドに適用されます。このアプローチは、しかし、非常に脆弱であり、一般的に非常に悪いです。

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