Как использовать Unity & MrAdvice (бесплатная альтернатива PostSharp) для регистрации метода класса - PullRequest
0 голосов
/ 26 октября 2019

Описание

Библиотека: https://github.com/ArxOne/MrAdvice/

Краткое описание проблемы :

Поведение AOP IMethodAdvice не работает при запуске игры в Unity Editor

Краткое описание ожидаемого поведения :

Когдадобавив мой Attribute в метод класса, атрибут будет записывать параметры и возвращаемое значение метода класса.

Реализация

Файлы из пакета nuget:

Mr advice compiled

Мой класс регистратора:

///////////////////////////////////////////////////////////
//  Logger.cs
//  Implementation of the Class Logger
//  Generated by Enterprise Architect
//  Created on:      26-oct.-2019 17:07:59
//  Original author: Loic
///////////////////////////////////////////////////////////

using System;
using ArxOne.MrAdvice.Advice;
using UnityEngine;

namespace Arch.Internal.Advices
{
    public class MethodLogger : Attribute, IMethodAdvice
    {
        /// 
        /// <param name="context"></param>
        public void Advise(MethodAdviceContext context)
        {
            Debug.Log("LOGGER");
            context.Proceed();
        }
    }
}

Мой класс MonoBehaviour

using UnityEngine;
using Arch.Internal.Advices;

public class SceneEventManager : MonoBehaviour
{
   [MethodLogger]
   public void Test()
   {
      Debug.Log("Invoked Test");
   }

   private void Update()
   {
       if (Input.anyKeyDown)
       {
                Test();
       }
   }
}

Фактическое поведение

, но этот код не печатает в консоли отладки (во время выполнения редактора) текст "LOGGER" из метода

public void Advise

Но Debug.Log("Invoked Test"); из public void Test()в консоли отображается.

Нужно ли вызывать MrAdvice.Weaver.exe при сборке сценариев Unity?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...