Зарегистрируйте перехватчик с помощью интерфейса Castle Fluent - PullRequest
2 голосов
/ 04 апреля 2010

Я пытаюсь реализовать обработку транзакций nhibernate через перехватчики и не могу понять, как зарегистрировать интерфейс через свободный механизм.

Я вижу

Component.For<ServicesInterceptor>().Interceptors

но не уверен, как его использовать. Кто-нибудь может мне помочь? Этот пример казался немного сложным.

Ответы [ 2 ]

6 голосов
/ 04 апреля 2010

Вы делаете это в два этапа:

  • Вам необходимо зарегистрировать перехватчик как услугу в контейнере:
container.Register(Component.For<MyInterceptor>());
  • Вы регистрируете компонент, который хотите перехватить. Используя метод Interceptors в свободном API, вы указываете, с каким из зарегистрированных перехватчиков (по ключу или типу) вы хотите перехватить этот компонент:
container.Register(Component.For<IFoo>().ImplementedBy<Foo>()
   .Interceptors<MyInterceptor>());

Подробнее см. в документации .

1 голос
/ 04 апреля 2010

Сначала зарегистрируйте перехватчик:

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

Затем зарегистрируйте перехватываемый объект:

container.Register (Component.For (). ImplementedBy (). Named ("MyService"). Interceptors (new InterceptorReference ("actionInterceptor ")). Anywhere);

...