0
我读过CastleWindsor的工厂,但我不清楚。希望任何人都可以帮助我。 我在MVC4项目中拥有这种类型的工厂。如何解决温莎城堡工厂的依赖问题?
public interface IOrderProcessorFactory
{
T Create<T>(string ProcessorName) where T : IOrderProcessor;
void Release(object service);
IOrderProcessor GetTakeAway();
IOrderProcessor GetInLocal();
}
这是注册是这样的:如果一个MVC控制器内我给工厂以这种方式
container.Register(Component.For<IOrderProcessorFactory>).AsFactory();
container.Register(Component.For<IOrderProcessor>).ImplementedBy<TakeAwayOrderProcessor>().LifestylePerWebRequest().Named("TakeAway"));
container.Register(Component.For<IOrderProcessor>().ImplementedBy<InLocalOrderProcessor>().LifestylePerWebRequest().Named("InLocal"));
。
_orderProcessorFactory.GetTakeAway();
我得到正确的一个,名为“TakeAway”。 但为此,我不得不知道类型。换句话说,我想调用工厂get方法并传递一个“名称”,工厂返回正确的一个。
例如,在伪代码,我想这
TakeAwayOrderProcessor processor1 = factory.GetMeProcessorCalled("TakeAway")
InLocalOrderProcessor processor2 = factory.GetMeProcessorCalled("InLocal")
我知道我可以传递参数的构造函数,但随后我将不得不为“手动”选择与如果名称是这回这个人。 ..
有什么办法温莎能做到这一点自动,像StructureMap做:
ObjectFactory.GetNamedInstance<IOrderProcessor>("InLocal");