2

インターセプターを介してnhibernate トランザクション処理を実装しようとしていますが、流暢なメカニズムを介してインターフェイスを登録する方法がわかりませんでした。

私は見る

Component.For<ServicesInterceptor>().Interceptors

しかし、それを使用する方法がわからない。誰かが私を助けることができますか?この例は少し複雑に見えました。

4

2 に答える 2

6

次の 2 つの手順で行います。

  • インターセプターをサービスとしてコンテナーに登録する必要があります。
container.Register(Component.For<MyInterceptor>());
  • インターセプトするコンポーネントを登録します。流暢な API のメソッドを使用しInterceptorsて、このコンポーネントをインターセプトする登録済みインターセプターを (キーまたはタイプで) 指定します。
container.Register(Component.For<IFoo>().ImplementedBy<Foo>()
   .Interceptors<MyInterceptor>());

詳細については、ドキュメントを参照してください。

于 2010-04-04T19:34:47.690 に答える
1

最初にインターセプターを登録します。

container.Register(Component.For<IDbInterceptor>().ImplementedBy<DbInterceptor>().Named("transactionInterceptor"));

次に、傍受されるオブジェクトを登録します。

container.Register(Component.For<IMyService>().ImplementedBy<MyService>().Named("MyService").Interceptors(new InterceptorReference("transactionInterceptor")).Anywhere);

于 2010-04-04T19:25:31.147 に答える