Hinzufügen Aspekt zu einer abstrakten Methode?
Frage
Postsharp gibt diesen Fehler:
Postsharp: Kann nicht für eine OnMethodInvocation Aspekt (...) mit Ziel-Ort Weben auf dem abstrakten oder externe Methode „...“. Erwägen ohne den Aspekt von dieser Methode oder Call-site Weben verwendet werden.
Empfohlene Anruf Ort Weben ist keine geeignete Lösung für mich. Gibt es eine Möglichkeit Pre / Post-Verarbeitung für die abstrakte Methode hinzufügen?
Lösung
Ich schlage vor, Sie Aspekt Vererbung. Der Aspekt wird automatisch auf alle Methoden hinzugefügt werden, um die abstrakte Methode zu implementieren.
Siehe MulticastAttribute.AttributeInheritance oder MulticastAttributeUsageAttribute.Inheritance oder offizielle Dokumentation .
Andere Tipps
Das ist natürlich imposible - wie würden Sie Ziel-Ort-Weben mit einer abstrakten Methode, ein Verfahren ohne Code ausführen? Sie können natürlich durchführen mit allen abgeleiteten Typen Ziel-Ort Weben Durchführung des Verfahrens, aber dies erfordert, dass Sie diese Art steuern. Oder Sie könnten das Verfahren nicht-abstrakte und virtuelle machen und erfordern abgeleitete Typen die Basisimplementierung zu nennen.