Używam VS2008 i chcę utworzyć ostrzeżenie/błąd czasu kompilacji na podstawie niestandardowych atrybutów właściwości (jeśli jest to możliwe).Generowanie niestandardowego ostrzeżenia o czasie kompilacji C#
Istnieją dwa przypadki, które mnie interesują obecnie:
[MyAttribute (typeof(MyClass)]
Gdzie MojaKlasa musi implementować interfejs. Obecnie dochodzić tego w konstruktorze atrybutu, jednak to nie ułatwiają wyśledzić, ze względu na charakter ślad stosu:
public MyAttribute (Type MyClassType)
{
System.Diagnostics.Debug.Assert(typeof(MyInterface).IsAssignableFrom(MyClassType),
"Editor must implement interface: " + typeof(MyInterface).Name);
}
Druga sprawa, która mnie interesuje, to gdzie mam typ zdefiniowany w atrybucie, jeśli ten typ implementuje interfejs, wówczas ostrzeżenie powinno być wyświetlane, jeśli nie ma innego atrybutu.
I.E. if (MyClass.Implements (SomeInterface) & &! istnieje (SomeAttibute)) {} Generowanie Ostrzeżenie
[MyAttribute(typeof(MyClass)]
// Comment next line to generate warning
[Foo ("Bar")]
Dzięki!
ciekawe pytanie, jestem ciekaw, czy coś takiego jest możliwe. +1 –
Interesujące również. –
http://stackoverflow.com/questions/154109/custom-compiler-warnings –