gpt4 book ai didi

.net - Unity 基于代码的拦截/日志记录配置

转载 作者:行者123 更新时间:2023-12-01 13:00:43 57 4
gpt4 key购买 nike

我使用 Unity 作为 IoC 容器,到目前为止工作正常。现在我想使用带有 TypeMatchingRule 和 LogCallHandler 的拦截来记录对接口(interface) IMyInterface 的所有调用。我正在通过代码配置 unity,但无法使日志记录正常工作。有人能给我举个简单的例子吗?我在文档中发现了很多小片段,但我无法为我的用例构建工作配置。好像我错过了大局!?

最佳答案

首先,做一个行为。这是一个例子:

public class MyLoggerBehavior : IInterceptionBehavior
{
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
var returnValue = getNext()(input, getNext);

if (returnValue.Exception != null)
{
Global.Logger.TraceException("Exception intercepted", returnValue.Exception);
}
else
{
Global.Logger.Trace("Method {0} returned {1}", input.MethodBase, returnValue.ReturnValue);
}
return returnValue;
}

public IEnumerable<Type> GetRequiredInterfaces()
{
return new Type[0];
}

public bool WillExecute
{
get { return Global.Logger.IsTraceEnabled; }
}
}

然后,注册它:

Container
.AddNewExtension<Interception>()
.RegisterType<IDao, NhDao>(new Interceptor(new InterfaceInterceptor()),
new InterceptionBehavior(new MyLoggerBehavior())
);

它将跟踪记录器中的每个调用

关于.net - Unity 基于代码的拦截/日志记录配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131375/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com