Autofac + Castle DynamicProxy:拦截器的顺序
-
14-12-2019 - |
题
我正在使用Autofac的Castle DynamicProxy。我有一个我创建了一个代理的对象,我有两个拦截器,它在代理上行动,一个用于记录异常,第二个用于更改方法的返回值。注册码如下所示:
var builder = new ContainerBuilder();
builder.Register(c => c.Resolve<ProxyGenerator>()
.CreateClassProxy<Foo>(
c.Resolve<ResultProcessorInterceptor>(),
c.Resolve<ExceptionLoggingInterceptor>()))
.As<Foo>();
.
通过按此顺序提供参数,我发现我得到了我想要的结果,即,记录异常并处理结果。如果我反转参数的顺序,则不会发生日志记录。
我的问题,然后:以这种方式注册,拦截器是否保证每次以相同的顺序执行?或者有更好的方法来确保订单将成为我每次打算的顺序?
fwiw,我看着iInternceptorElector接口。也许我错过了一些东西 - 这不是不可能的 - 但它看起来在这种情况下没有相关。但如果我错了,我会很乐意得到纠正。
如果有必要,我可以提供更长的代码样本。
Musicologyman
解决方案
是的,拦截器将在每个截取的方法中以提供的顺序执行默认执行。
正如正确注意,如果需要,您可以使用IInterceptorSelector
在每个方法基础上覆盖它。
不隶属于 StackOverflow