Ich verwende VS2008 und möchte eine Kompilierungszeit Warnung/Fehler basierend auf benutzerdefinierten Attributen für eine Eigenschaft erstellen (wenn es möglich ist).Generieren einer benutzerdefinierten Kompilierungszeit Warnung C#
Es gibt zwei Fälle, die mich interessieren, zur Zeit:
[MyAttribute (typeof(MyClass)]
Wo MyClass eine Schnittstelle zu implementieren hat. Zur Zeit behaupten ich dies im Konstruktor des Attributs, jedoch bedeutet dies nicht machen es einfach, aufgrund der Art der Stack-Trace auf die Spur,:
public MyAttribute (Type MyClassType)
{
System.Diagnostics.Debug.Assert(typeof(MyInterface).IsAssignableFrom(MyClassType),
"Editor must implement interface: " + typeof(MyInterface).Name);
}
Der zweite Fall, der mich interessiert, ist, wo ich eine haben Typ, der in einem Attribut definiert ist, wenn dieser Typ eine Schnittstelle implementiert, sollte eine Warnung angezeigt werden, wenn kein anderes Attribut vorhanden ist.
I.E. if (MyClass.Implements (SomeInterface) & &! exists (SomeAttibute)) {Generieren Warnung}
[MyAttribute(typeof(MyClass)]
// Comment next line to generate warning
[Foo ("Bar")]
Dank!
Interessante Frage zu tun, ich bin gespannt, ob so etwas möglich ist. +1 –
Interessiert auch. –
http://stackoverflow.com/questions/154109/custom-compiler-warnings –