2011-09-16 38 views
0

在Autofac使用AOP的典型方式是在每个部件上宣布拦截:Autofac aop通配符:有可能吗?

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

在我的项目我有很多(数十)的IFilter实现,所以添加和维护他们不方便。我宁愿拦截所有服务实例的能力。例如:

builder.EnableInterfaceInterceptors<IFilter>(); 

这可能吗?

回答

0

我不知道如果EnableInterfaceInterceptors可以处理多个注册,但如果它可以在本应工作:

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

如果需要,这可以被包装成一个扩展方法(如几乎所有的ContainerBuilder登记方法)给你上面要求的确切语法。