使用TypedFactory的潜在配置错误的组件

时间:2011-03-02 18:17:48

标签: castle-windsor

我正在学习如何使用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

我该如何修复剩下的?

1 个答案:

答案 0 :(得分:2)

crixo - 这就是为什么称为潜在配置错误的组件的原因。请注意重点。

原因是,在这种情况下,“缺失”的依赖关系是动态提供给DelegateProxyFactory的,而温莎无法静态验证。

这意味着,如果您直接使用该组件,您可能最终无法解决它,除非您动态提供缺少的依赖项。但是,该设施确保它始终如此,因此如果通过设施使用,则组件始终可以正确解析。

换句话说 - 您可以放心地忽略该警告。

PS,

因为您提供内联CustomTypedFactoryComponentSelector,所以您无需注册。未来版本的Windsor将能够找出这样的依赖关系,并为您提供它们。现在,请放心,它会起作用。

换句话说 - 您可以放心地忽略该警告。