19

VS2008を使用していて、プロパティのカスタム属性に基づいてコンパイル時の警告/エラーを作成したいと思います(可能な場合)。

現在私が興味を持っているのは2つのケースです。

  [MyAttribute (typeof(MyClass)]

MyClassがインターフェースを実装する必要がある場所。現在、属性のコンストラクターでこれを表明していますが、スタックトレースの性質上、これを追跡するのは簡単ではありません。

 public MyAttribute (Type MyClassType)
    {
         System.Diagnostics.Debug.Assert(typeof(MyInterface).IsAssignableFrom(MyClassType),
                                         "Editor must implement interface: " + typeof(MyInterface).Name);

    }

私が興味を持っている2番目のケースは、属性にタイプが定義されている場合です。そのタイプがインターフェースを実装している場合、別の属性が存在しない場合は警告が表示されます。

IE if(MyClass.Implements(SomeInterface)&&!Exists(SomeAttibute)){警告の生成}

[MyAttribute(typeof(MyClass)] 
// Comment next line to generate warning
[Foo ("Bar")]

ありがとう!

4

1 に答える 1

6

あなたはPostSharpでそれを行うことができます。

私は一度それをしました、そしてそれをする方法をここで説明しました

于 2009-09-14T07:39:15.337 に答える