在Autofac中使用AOP的规范方法是在每个组件上声明拦截器:
builder.RegisterType<Filter1>().As<IFilter>()
.EnableInterfaceInterceptors();
在我的项目中,我有很多(数十个)IFilter实现,因此添加和维护它们很不方便。我更喜欢拦截所有服务实例的能力。类似的东西:
builder.EnableInterfaceInterceptors<IFilter>();
有可能吗?
答案 0 :(得分:0)
我不确定EnableInterfaceInterceptors
是否可以处理多个注册,但如果可以的话,这应该可行:
builder.RegisterAssemblyTypes(assemblies).Where(t => t.IsAssignableTo<IFilter>())
.EnableInterfaceInterceptors();
如果需要,可以将其包装到扩展方法中(就像几乎所有的ContainerBuilder注册方法一样),以便为您提供上面请求的确切语法。