Je voudrais définir une contrainte sur mon attribut personnalisé (PostSharp). Mon but est d'obtenir une erreur ou un avertissement lors de la compilation, si la classe X n'implémente pas l'interface Y mais elle a mon attribut.Attribut personnalisé uniquement sur des classes spécifiques
Donc, cela devrait fonctionner:
[MyAttributeOnlyForY]
public class X : Y { ... }
mais cela ne devrait briser le processus de compilation:
[MyAttributeOnlyForY]
public class X { ... }
Comment est-il possible?
La raison
Cet attribut fonctionne comme un aspect (ce qui est PostSharp attribute), et je veux être sûr que la classe fournit toutes les informations tissé nécessaires à cet attribut.
Je veux éviter nul résultat sur
(eventArgs.Instance as ILoggerServiceOwner)
et je pense que complie vérification de temps est une bonne pratique.
Solution
J'ai trouvé un bon départ ici: Validating attribute usage with PostSharp Aspects
et quelques idées d'ici: http://www.postsharp.org/forum/postsharp-laos/onmethodboundaryaspect-compiletimevalidate-param-issues-t333.html – boj