Generando una advertencia de tiempo de comstackción personalizada C #

Estoy usando VS2008 y me gustaría crear una advertencia / error de tiempo de comstackción basado en atributos personalizados en una propiedad (si es posible).

Hay dos casos que me interesan actualmente:

[MyAttribute (typeof(MyClass)] 

Donde MyClass tiene que implementar una interfaz. Actualmente lo afirmo en el constructor del atributo, sin embargo, esto no hace que sea fácil de rastrear, debido a la naturaleza del seguimiento de la stack:

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

El segundo caso que me interesa es cuando tengo un tipo definido en un atributo, si ese tipo implementa una interfaz, entonces debería aparecer una advertencia si otro atributo no está presente.

IE if (MyClass.Implements (SomeInterface) &&! Exists (SomeAttibute)) {Generate Warning}

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

¡Gracias!

Puedes hacerlo con PostSharp .

Una vez lo hice, y expliqué cómo hacerlo aquí.