Autofac aop wildcard: возможно ли это? - PullRequest
0 голосов
/ 17 сентября 2011

Канонический способ использования AOP в Autofac заключается в объявлении перехватчика для каждого компонента:

builder.RegisterType<Filter1>().As<IFilter>()
  .EnableInterfaceInterceptors();

В моем проекте у меня много (десятки) реализаций IFilter, поэтому добавлять и поддерживать их неудобно.Я бы предпочел возможность перехватывать все экземпляры сервиса.Что-то вроде:

builder.EnableInterfaceInterceptors<IFilter>();

Возможно ли это?

1 Ответ

0 голосов
/ 17 сентября 2011

Я не уверен, что EnableInterfaceInterceptors может обрабатывать несколько регистраций, но если это возможно, это должно работать:

builder.RegisterAssemblyTypes(assemblies).Where(t => t.IsAssignableTo<IFilter>())
    .EnableInterfaceInterceptors();

Если вам нужно, это можно включить в метод расширения (как почти все методы регистрации ContainerBuilder), чтобы получить точный синтаксис, который вы запросили выше.

...