Igo*_*man 4 c# asp.net aop ninject castle-dynamicproxy
我正在使用Ninject拦截来记录我的一些方法的错误.我的拦截课看起来像这样
public class ErrorLoggingInterceptor : IInterceptor
{
private readonly ILogFactory _logFactory;
public ErrorLoggingInterceptor(ILogFactory logFactory)
{
_logFactory = logFactory;
}
public void Intercept(IInvocation invocation)
{
try
{
invocation.Proceed();
}
catch (Exception e)
{
var sb = new StringBuilder();
sb.AppendFormat("Executing {0}.{1} ",invocation.Request.Method.DeclaringType.Name,invocation.Request.Method.Name);
sb.AppendFormat(" {0} caught: {1})", e.GetType().Name, e.Message);
_logFactory.Error(sb.ToString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个拦截器类工作得很好但是我遇到了一些问题.
invocation.Request.Method.DeclaringType.Name给我接口的名称,如何获得真正的迫害类的名称?
有没有办法获得参数值?我可以使用参数名称,invocation.Request.Method.GetParameters但我没有找到获取实际值的方法
bool DoSomething(..),当它失败时有异常,我希望它看起来像返回false的方法.你在谈论Ninject,但我认为你只对Castle Dynamic Proxy的功能感兴趣,IInvocation你的意思是Castle.DynamicProxy.IInvocation.
invocation.TargetType.Nameinvocation.Argumentsinvocation.ReturnValue - 您可以在发生异常时进行设置https://github.com/castleproject/Core/blob/master/src/Castle.Core/DynamicProxy/IInvocation.cs
当谈到Ninject扩展时,我会期待类似的东西(但是,我从未使用它):
invocation.Request.Target.GetType().Nameinvocation.Request.Argumentsinvocation.ReturnValuehttps://github.com/ninject/ninject.extensions.interception/blob/master/src/Ninject.Extensions.Interception/IInvocation.cs https://github.com/ninject/ninject.extensions.interception/blob/master /src/Ninject.Extensions.Interception/Request/IProxyRequest.cs
| 归档时间: |
|
| 查看次数: |
2019 次 |
| 最近记录: |