我正在学习如何使用Windsor TypedFactory:这个功能真棒! 我让它适合我的需要,但我担心有1 可能配置错误的组件 “Castle.TypedFactory.DelegateProxyFactory”IProxyFactoryExtension / DelegateProxyFactory ...
这是我的容器,一切正常......仍然只关心那些来自建造容器的威胁
container = new WindsorContainer();
container.Kernel.Resolver.AddSubResolver(new ArrayResolver(container.Kernel));
container.AddFacility<TypedFactoryFacility>();
container.Register(Component.For<ITypedFactoryComponentSelector>().ImplementedBy<CustomTypedFactoryComponentSelector>());
container.Register
(
Component.For<Contracts.IConverter>().ImplementedBy<Components.Converter1>().Named("Converter1").LifeStyle.Singleton,
Component.For<Contracts.IConverter>().ImplementedBy<Components.Converter2>().Named("Converter2").LifeStyle.Singleton,
Component.For<Contracts.IConverterFactory>().AsFactory(c => c.SelectedWith(new CustomTypedFactoryComponentSelector())),
Component.For<ConverterHelper>().LifeStyle.Transient
);
添加
container.Register(Component.For<ITypedFactoryComponentSelector>().ImplementedBy<CustomTypedFactoryComponentSelector>());
我解决了另外一个“可能配置错误的组件” “Castle.TypedFactory.Interceptor”TypedFactoryInterceptor
我该如何修复剩下的?
答案 0 :(得分:2)
crixo - 这就是为什么称为潜在配置错误的组件的原因。请注意重点。
原因是,在这种情况下,“缺失”的依赖关系是动态提供给DelegateProxyFactory
的,而温莎无法静态验证。
这意味着,如果您直接使用该组件,您可能最终无法解决它,除非您动态提供缺少的依赖项。但是,该设施确保它始终如此,因此如果通过设施使用,则组件始终可以正确解析。
换句话说 - 您可以放心地忽略该警告。
PS,
因为您提供内联CustomTypedFactoryComponentSelector
,所以您无需注册。未来版本的Windsor将能够找出这样的依赖关系,并为您提供它们。现在,请放心,它会起作用。
换句话说 - 您可以放心地忽略该警告。