Autofac aop通配符:有可能吗?

时间:2011-09-16 20:43:33

标签: autofac

在Autofac中使用AOP的规范方法是在每个组件上声明拦截器:

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

在我的项目中,我有很多(数十个)IFilter实现,因此添加和维护它们很不方便。我更喜欢拦截所有服务实例的能力。类似的东西:

builder.EnableInterfaceInterceptors<IFilter>();

有可能吗?

1 个答案:

答案 0 :(得分:0)

我不确定EnableInterfaceInterceptors是否可以处理多个注册,但如果可以的话,这应该可行:

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

如果需要,可以将其包装到扩展方法中(就像几乎所有的ContainerBuilder注册方法一样),以便为您提供上面请求的确切语法。