我使用unity,我喜欢使用InterceptionBehavior进行日志记录。当我将InterceptionBehavior添加到类型regestration时,没有任何事情发生,并且没有调用InterceptionBehavior。
这是行为类:
public class Logger : IInterceptionBehavior
{
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
Console.WriteLine("Methode {0} wurde aufgerufen",input.MethodBase.Name);
return getNext.Invoke().Invoke(input, getNext);
}
public IEnumerable<Type> GetRequiredInterfaces()
{
return Type.EmptyTypes;
}
public bool WillExecute => true;
}
类型注册:
container.RegisterType<IParser, Parser>(
new Interceptor(new InterfaceInterceptor()),
new InterceptionBehavior(new Logger()));
container.RegisterType<IBerechne, Berechne>(
new Interceptor(new InterfaceInterceptor()),
new InterceptionBehavior(new Logger()));
答案 0 :(得分:1)
答案 1 :(得分:0)
添加新扩展程序并确保您的界面为public
:
var container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<IParser, Parser>(
new Interceptor<InterfaceInterceptor>(),
new InterceptionBehavior<Logger>());