2008-12-09 7 views
4

Je suis à l'aventure dans certains AOP et il semble qu'avec .NET PostSharp est la voie à suivre.Ajout d'un attribut OnException à l'aide de PostSharp

Je souhaite effectuer une journalisation simple sur la base de données lorsqu'une exception se produit. Cependant, je trouve difficile de trouver des exemples concrets d'utilisation de PostSharp au-delà des bases. J'ai essayé les éléments suivants:

[Serializable] 
public sealed class LogExceptionAttribute : ExceptionHandlerAspect 
{ 
    public override void OnException(MethodExecutionEventArgs eventArgs) 
    { 
     //do some logging here 
    } 
} 

et fixer ensuite un attribut [LogException] à une méthode

Mais je reçois une erreur de compilation:

Error 7 The type "CoDrivrBeta1.Classes.LogExceptionAttribute" or one of its ancestor should be decorated by an instance of MulticastAttributeUsageAttribute. C:\work\CoDrivrBeta1\CoDrivrBeta1\EXEC CoDrivrBeta1 

Je dois avouer que je suis très nouveau à cela, mais il semble être un concept intéressant, je pense que j'ai juste besoin d'être pointé dans la bonne direction

Répondre

2

Je l'ai à travailler en prolongeant la OnExceptionAspect:

[Serializable] 
public sealed class LogExceptionAttribute : OnExceptionAspect 
{ 
    public override void OnException(MethodExecutionEventArgs eventArgs) 
    { 
     //do some logging here 
    } 
} 

Original Post:

Il veut que vous ajoutez l'attribut Multicast:

[Serializable] 
[MulticastAttributeUsage(... Add Appropriate MulticastTargets ...)] 
public sealed class LogExceptionAttribute : ExceptionHandlerAspect 
{ 
    public override void OnException(MethodExecutionEventArgs eventArgs) 
    { 
     //do some logging here 
    } 
} 

Voir ce lien pour plus de détails: http://doc.postsharp.org/1.0/UserGuide/Laos/Multicasting/Overview.html

0

J'ai utilisé OnMethodBoundaryAspect au lieu de ExceptionHandlerAspect sans problème. Et je n'ai pas fait le mien scellé non plus.

Questions connexes