我试图通过拦截器实现nhibernate transaction handling,并且无法弄清楚如何通过流畅的机制注册接口。
我看到了
Component.For<ServicesInterceptor>().Interceptors
但不确定如何使用它。有人可以帮我吗? This example似乎有点复杂。
答案 0 :(得分:6)
您分两步完成:
container.Register(Component.For<MyInterceptor>());
Interceptors
方法,您可以指定要拦截此组件的已注册拦截器(按键或类型):container.Register(Component.For<IFoo>().ImplementedBy<Foo>() .Interceptors<MyInterceptor>());
有关详细信息,请参阅the documentation。
答案 1 :(得分:1)
首先注册拦截器:
container.Register(Component.For<IDbInterceptor>().ImplementedBy<DbInterceptor>().Named("transactionInterceptor"));
然后注册截获的对象:
container.Register(Component.For&lt; IMyService&gt;()。ImplementedBy&lt; MyService&gt;()。Named(“MyService”)。拦截器(new InterceptorReference( “transactionInterceptor”))任何地方);