Конфигурация перехвата Autofac для дженериков

Я пытаюсь сделать какой-то перехват с помощью Autofac. В настоящее время у меня настроены некоторые объекты bll:

updater.RegisterGeneric(typeof(BaseBll<>))
            .AsImplementedInterfaces()
            .InstancePerRequest()
            .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
            .InterceptedBy(typeof(ActivityLogger));
updater.Register(c => new ActivityLogger());

Я помещаю атрибут Interception в один из классов:

[Intercept(typeof(ActivityLogger))]
public class MyClassBll : BaseBll<TModel>, IMyClassBll

К сожалению, метод Intercept не вызывается при вызове некоторых методов из MyClassBll. Если у вас есть какие-либо идеи, как это можно исправить, пожалуйста, дайте мне знать.

На данный момент я нашел временный обходной путь:

updater.RegisterType<MyClassBll>().As<IMyClassBll>().EnableInterfaceInterceptors();

person Daemon025    schedule 11.08.2014    source источник
comment
Как вы разрешаете тип, который хотите наблюдать?   -  person wbennett    schedule 11.08.2014
comment
На данный момент я использую атрибут Intercept, который помещаю в классы, за которыми хочу наблюдать.   -  person Daemon025    schedule 11.08.2014


Ответы (2)


Кажется, в Autofac есть ошибка с внедрением свойств, изменение его на внедрение конструктора решило проблему.

person Daemon025    schedule 05.09.2014

Вы забыли включить .EnableInterfaceInterceptors() или .EnableClassInterceptors() перед .InterceptedBy(). Посмотрите здесь: https://autofaccn.readthedocs.io/en/latest/advanced/interceptors.html

[ОБНОВИТЬ]

По запросу я предоставил пример кода на основе опубликованного кода:

updater.RegisterGeneric(typeof(BaseBll<>))
  .AsImplementedInterfaces()
  .InstancePerRequest()
  .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
  .EnableInterfaceInterceptors()
  .InterceptedBy(typeof(ActivityLogger));
person bauermann    schedule 31.07.2019
comment
сначала объясните свой ответ примером, а затем ссылайтесь на ссылки. - person NickCoder; 31.07.2019
comment
Конечно, @NickCoder, как вы и просили, я предоставил пример кода. - person bauermann; 31.07.2019