2016-07-19 30 views
0

Ich versuche, eine Methode Dekorateur mit Fody zu schaffen, aber es gibt mir die folgende Fehlermeldung:Fody MethodDecorator nicht funktionieren

enter image description here

ich besonders darauf genommen habe meinen IMethodDecorator innerhalb jeder Namespace zu wickeln wie schon in vielen Orten online erwähnt. Im Folgenden ist der Beispielcode, den ich in einer Konsolen-App versuche.

IMethodDecorator

using System; 
using System.Reflection; 


    public interface IMethodDecorator 
    { 
     void OnEntry(MethodBase method); 
     void OnExit(MethodBase method); 
     void OnException(MethodBase method, Exception exception); 
    } 

MethodDecoratorAttribute

using System; 
using System.Diagnostics; 
using System.Reflection; 
using FODYPOC; 

// Atribute should be "registered" by adding as module or assembly custom attribute 
[module: MethodDecorator] 

namespace FODYPOC 
{ 
// Any attribute which provides OnEntry/OnExit/OnException with proper args 
    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Assembly | AttributeTargets.Module)] 
    public class MethodDecoratorAttribute : Attribute, IMethodDecorator 
    { 
     // instance, method and args can be captured here and stored in attribute instance fields 
     // for future usage in OnEntry/OnExit/OnException 

     public MethodDecoratorAttribute() { } 

     public void OnEntry(MethodBase method) 
     { 
      Console.WriteLine(); 
     } 

     public void OnExit(MethodBase method) 
     { 
      Console.WriteLine(); 
     } 

     public void OnException(MethodBase method, Exception exception) 
     { 
      Console.WriteLine(); 
     } 
    } 

    public class Sample 
    { 
     [MethodDecorator] 
     public void Method() 
     { 
      Debug.WriteLine("Your Code"); 
     } 
    } 
} 

mir jemand Kann in die richtige Richtung weisen. Es sieht ziemlich einfach zu implementieren aus und ich weiß, dass ich irgendwo einen sehr dummen Fehler mache.

Antwort

0

Offenbar funktionierte die neueste Version von MethodDecorator.Fody (Version 0.9.0.6) nicht. Downgrade der Version auf Version 0.8.1.1 behob das Problem für mich.

Nach ein wenig mehr Untersuchung scheint es, dass die Interface-Methode-Signaturen in den zwei Versionen unterschiedlich waren. Als ich das neue Paket hatte, erwartete es MethodBase nicht als Parameter, und da nichts gefunden wurde, was mit der erwarteten Schnittstelle übereinstimmt, warf es den Fehler auf.