2009-07-16 7 views
2

Créé une classe simple pour tester le OnExceptionAspect dans PostSharp.PostSharp OnExceptionAspect ne fonctionnait pas comme prévu

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

Ajouté l'attribut à une méthode

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

et invoquée.

Cependant, l'exception n'est pas réellement avalée, ce qui semble étrange.

Je n'ai pas été capable de trouver des problèmes similaires, donc je m'attends à quelque chose de mineur que je n'ai pas eu raison. N'importe qui?

Répondre

0

Parfois, il est utile de regarder l'assemblage résultant en utilisant Reflector. PostSharp génère des assemblages .NET simples, il n'y a pas de magie.

+8

Pfft ... viens sur Gael, nous connaissons tous les références PostSharp System.Magic. –

3

Vous pouvez vérifier une sortie de génération: Cela peut indiquer un post-traitement impliqué ou non, par ex. POSTSHARP: avertissement postsharp PS0131: Le module 'YourAssembly.dll' ne contient aucun aspect ou autre transformation. Pour améliorer les performances au moment de la création, envisagez de désactiver PostSharp pour ce module en définissant le symbole de compilation (constante aka) «SkipPostSharp» dans votre projet ou en définissant la propriété MSBuild «SkipPostSharp = True». : message: PostSharp complete - 0 erreurs, 1 warnings, servi en 1637 ms

+0

+1 pour m'avoir fait prendre conscience de la raison pour laquelle mon aspect ne fonctionnait pas parce que j'avais la constante SkipPostSharp définie sur true puisque jusqu'à maintenant je n'utilisais pas les aspects de ce projet. –

Questions connexes