Потенциально неправильно настроенные компоненты с использованием TypedFactory - PullRequest
1 голос
/ 02 марта 2011

Я учусь использовать 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 Ответ

2 голосов
/ 03 марта 2011

crixo - есть причина, по которой это называется Потенциально Неверно сконфигурированный компонент.Обратите внимание на акцент.

Причина в том, что в данном случае «отсутствующая» зависимость предоставляется динамически для DelegateProxyFactory, и Виндзор не может проверить это статически.

Так чтоозначает, что если бы вы использовали этот компонент напрямую, вы могли бы в конечном итоге оказаться не в состоянии разрешить его, если вы не предоставите недостающую зависимость на лету.Однако средство гарантирует, что оно всегда это делает, поэтому компонент всегда разрешается правильно, если используется через средство.

Другими словами - вы можете спокойно игнорировать это предупреждение.

PS,

, поскольку вы предоставляете CustomTypedFactoryComponentSelector, вам не нужно его регистрировать.Будущая версия Windsor сможет выяснить такие зависимости и предоставить их вам.Прямо сейчас, просто будьте уверены, что это сработает.

Другими словами - вы можете спокойно проигнорировать это предупреждение.

...