Fody MethodDecorator не работает

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

введите здесь описание изображения

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

Декоратор IMethod

using System;
using System.Reflection;


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

Атрибут декоратора метода

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

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


person Farax    schedule 19.07.2016    source источник


Ответы (1)


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

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

person Farax    schedule 19.07.2016