Unity InterceptionBehavior不被调用
本文关键字:调用 InterceptionBehavior Unity | 更新日期: 2023-09-27 18:18:25
我使用unity,我喜欢使用InterceptionBehavior进行日志记录。当我将InterceptionBehavior添加到类型注册中时,没有任何事情发生,并且没有调用InterceptionBehavior。
下面是Behavior类:
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()));
你需要为你的Unity容器启用拦截。默认情况下不启用
container.AddNewExtension<Interception>();
参见使用Unity进行拦截
添加新的扩展并确保您的界面是public
:
var container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterType<IParser, Parser>(
new Interceptor<InterfaceInterceptor>(),
new InterceptionBehavior<Logger>());