2016-07-19 4 views
0

Я пытаюсь создать метод декоратора с помощью Fody, но он дает мне следующую ошибку:Fody MethodDecorator не работает

enter image description here

Я принял конкретную помощь не обернуть мою IMethodDecorator внутри любого пространства имен, как это было упомянутых во многих местах в Интернете. Ниже приведен пример кода, который я пытаюсь использовать в консольном приложении.

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"); 
     } 
    } 
} 

Может кто-то мне точку в правильном направлении. Это выглядит довольно просто для реализации, и я знаю, что я делаю очень глупую ошибку где-то.

ответ

0

По-видимому, последняя версия MethodDecorator.Fody (версия 0.9.0.6 в настоящее время) не работает. Переход на версию до версии 0.8.1.1 был исправлен для меня.

После небольшого исследования выяснилось, что сигнатуры метода интерфейса были разными в двух версиях. Поэтому, когда у меня появился новый пакет, он не ожидал, что MethodBase будет параметром, и из-за того, что он не найдет ничего, что соответствует ожидаемому интерфейсу, он выбрасывает ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^