我想知道如何在温莎实现以下目标。我以前将AutoFac与以下代码配合使用,效果很好,但是我不确定如何在Windsor中完成相同的工作:
// named injection registrations
builder.RegisterType<FoodMarketProvider>().Keyed<IMarketProvider>(MarketProviders.Food.GetDescription()).PropertiesAutowired();
builder.RegisterType<ClothsMarketProvider>().Keyed<IMarketProvider>(MarketProviders.Cloths.GetDescription()).PropertiesAutowired();
因此,在我的经理中,我可以使用IIndex
来获取指定的注射剂:
// market manager constructor
public MarketManager(IIndex<string, IMarketProvider> serviceDictionary)
用法示例:
public Task<dynamic> GetResellerProducts(MarketProviders market)
{
var marketProvider = base.ServiceDictionary[market.GetDescription()];
return marketProvider.GetProducts();
}
谢谢!
答案 0 :(得分:0)
IIndex
是Autofac独有的,而Windsor没有确切的对应物。 Type Factories是更通用的工具,通常用于这些情况。您可以配置它们以类似于IIndex
as shown in the documentation的方式按名称查找组件。