2009-07-16 3 views
2

Erstellt eine einfache Klasse zum Testen der OnExceptionAspect in PostSharp.PostSharp OnExceptionAspect funktioniert nicht wie erwartet

[Serializable] 
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] 
public class ExceptionSwallower : OnExceptionAspect 
{ 
    public override void OnException(MethodExecutionEventArgs eventArgs) 
    { 
     eventArgs.FlowBehavior = FlowBehavior.Return; 
     base.OnException(eventArgs); 
    } 
} 

Added das Attribut auf ein Verfahren

[ExceptionSwallower] 
    public void SomeMethod() 
    { 
     throw new Exception(); 
    } 

und sie aufgerufen.

Allerdings wird die Ausnahme nicht wirklich verschluckt, was merkwürdig erscheint.

Ich konnte keine ähnlichen Probleme finden, also erwarte ich, dass es einige kleinere Dinge gibt, die ich nicht richtig verstanden habe. Jemand?

Antwort

0

Manchmal hilft es, die resultierende Baugruppe mit Reflector zu betrachten. PostSharp generiert einfache .NET-Assemblies, es gibt keine Magie.

+8

Pfft ... komm Gael, wir alle wissen, PostSharp Referenzen System.Magic. –

3

Sie können eine Build-Ausgabe überprüfen: Es kann einen Hinweis geben war Post-Processing beteiligt oder nicht, z. POSTSHARP: Postsharp-Warnung PS0131: Das Modul 'YourAssembly.dll' enthält keinen Aspekt oder andere Transformation. Ziehen Sie in Betracht, PostSharp für dieses Modul zu deaktivieren, indem Sie das Kompilierungssymbol (aka constant) "SkipPostSharp" in Ihrem Projekt festlegen, oder legen Sie die MSBuild-Eigenschaft "SkipPostSharp = True" fest, um die Leistung von Build-time zu verbessern. : Nachricht: PostSharp abgeschlossen - 0 Fehler, 1 Warnungen, serviert in 1637 ms

+0

+1 für die Erkenntnis, dass mein Aspekt nicht funktionierte, war, weil ich die SkipPostSharp-Konstante auf true gesetzt hatte, da ich bis jetzt keine Aspekte in diesem Projekt verwendet habe. –

Verwandte Themen