0
如何使用Autofac根據另一個對象的值在運行時注入對象?使用Autofac根據另一個對象的值在運行時注入對象
我想要做類似下面,在那裏我可以註冊每個AggregateQuoteManager並調用一個我需要在運行時根據租賃這是我從ITenancyContext
得到builder.RegisterType<AggregateQuoteManagerTenancyA>().Named<IAggregateQuoteManager>("aggregateQuoteManagerForTenancyA");
builder.RegisterType<AggregateQuoteManagerTenancyB>().Named<IAggregateQuoteManager>("aggregateQuoteManagerForTenancyB");
builder.RegisterType<AggregateQuoteManagerDefault>().Named<IAggregateQuoteManager>("aggregateQuoteManagerDefault");
builder.Register(c =>
{
var tenancy = DependencyResolver.Current.GetService<ITenancyContext>().ShortCode;
switch (tenancy.ShortCode)
{
case "Tenancy-A":
return c.ResolveNamed<IAggregateQuoteManager>("aggregateQuoteManagerForTenancyA");
case "Tenancy-B":
return c.ResolveNamed<IAggregateQuoteManager>("aggregateQuoteManagerForTenancyB");
default:
return c.ResolveNamed<IAggregateQuoteManager>("aggregateQuoteManagerDefault");
}
}
).As<IAggregateQuoteManager>();
那麼,有什麼問題?你的代碼示例是行得通的,不是嗎? – Steven 2014-09-29 17:28:51
另外,與問題無關:如果Autofac已經是您的依賴關係解析器,請不要在您的lambda中使用DependencyResolver.Current.GetService。解決入站組件上下文中的所有問題。 – 2014-09-30 18:04:02
「其他對象」看起來像租戶標識符。您是否嘗試過Autofac multitenant支持? http://autofac.readthedocs.org/en/latest/advanced/multitenant.html – 2014-09-30 18:04:53