Ajouter un aspect à une méthode abstraite?
Question
PostSharp donne cette erreur:
PostSharp: impossible d'appliquer un Aspect OnMethodInvocation (...) avec tissage du site cible sur le résumé ou méthode externe "...". Considérer exclure l'aspect de cette méthode ou utilisez le tissage sur site d’appel.
Le tissage suggéré sur les sites d’appel n’est pas une solution appropriée pour moi. Est-il possible d’ajouter un pré / post traitement pour la méthode abstraite?
La solution
Je vous suggère d'utiliser l'héritage d'aspect. Cet aspect sera automatiquement ajouté à toutes les méthodes implémentant la méthode abstraite.
Voir MulticastAttribute.AttributeInheritance ou MulticastAttributeUsageAttribute.Inheritance, ou documentation officielle pour plus de détails.
Autres conseils
Ceci est bien sûr impossible - comment effectueriez-vous le tissage du site cible avec une méthode abstraite, une méthode sans code? Vous pouvez bien sûr effectuer un tissage de site cible avec tous les types dérivés implémentant la méthode, mais cela nécessite que vous contrôliez ces types. Vous pouvez également rendre la méthode non abstraite et virtuelle et demander aux types dérivés d’appeler l’implémentation de base.