2011-09-16 44 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登記方法)給你上面要求的確切語法。