【发布时间】:2015-08-16 19:58:39
【问题描述】:
我正在尝试让 Castle Windsor 使用我指定的拦截器。
这是我的代码:
container = new WindsorContainer();
container.AddFacility<TypedFactoryFacility>();
container.Register(Castle.MicroKernel.Registration
.Types
.FromThisAssembly()
.BasedOn<IInterceptor>()
.Configure(x=>x.LifestyleTransient()));
container.Register(Castle.MicroKernel.Registration
.Types
.FromAssemblyInThisApplication()
.BasedOn<IImporter>()
.Configure(x => x.Interceptors<LoggingInterceptor>().LifeStyle.Is(LifestyleType.Transient)));
container.Register(Component
.For<IImporterFactory>()
.AsFactory(c => c.SelectedWith(new ImporterFactoryComponentSelector()))
.LifeStyle.Transient);
设置 Castle Windsor 后,我得到了我需要的 IImporter 实现:
IImporterFactory importerFactory = container.Resolve<IImporterFactory>();
var test = importerFactory.Create(FileType.M3Availability);
test.ImportFile(fileName);
我希望在执行 test.ImportFile(str) 之前调用拦截器,但它不是
我在组件注册过程中做错了吗?
查看“容器”对象我可以看到我所有的对象都有正确的拦截器(见图)
我在组件注册期间做错了吗? 我该如何调试?
【问题讨论】:
-
您的拦截器是否注册了 LoggingInterceptor 服务?你能从容器中解析那个类型吗?
标签: castle-windsor castle-dynamicproxy