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");