2009-09-14 10 views
18

私はVS2008を使用しており、可能であればプロパティのカスタム属性に基づいてコンパイル時の警告/エラーを作成したいと考えています。 MyClassのは、インターフェイスを実装する必要がありカスタムコンパイル時の警告を生成するC#

[MyAttribute (typeof(MyClass)] 

は2例現在の関心は私があります。

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

    } 

私に興味後者の場合、私が持っているところされています。現在、私は、しかし、これはそれが簡単に起因するスタックトレースの性質のために、追跡することはありません、属性のコンストラクタでこれを主張しますタイプがインタフェースで実装されている場合、別の属性が存在しない場合は警告が表示されます。

I.E.もし(MyClass.Implements(SomeInterface)& &!)(SomeAttibuteが存在する)

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

感謝を{警告を生成します}!

+0

興味深い質問を行う方法を説明しましたが、私は興味があります。 +1 –

+0

にも興味があります。 –

+0

http://stackoverflow.com/questions/154109/custom-compiler-warnings –

答えて

7

PostSharpでこれを行うことができます。そのようなことが可能な場合

私は一度それをやって、それをhere

+0

ありがとうございました! –

+0

私はちょっとした問題を発見しました。GetCustomAttributes()はもはや返されないように見えます(これは別の問題のために前に鋭いポストを見て、それに反して決定しました) System.AttributeではなくPostSharp.Laos.OnMethodInvocationAspectから派生した属性 –

+0

System.Attributeを返しますか?それを自分の属性にキャストできませんか? (GetCustomAttributesは常にSystem.Attribute AFAIKの配列を返すので、いつも私は思うようにキャストする必要がありますか? –

関連する問題