如何使用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>();
答案 0 :(得分:0)
我采用了Travis Illig的方法 - &#34;&#34;其他对象&#34;看起来像租户标识符。您是否尝试过Autofac多租户支持?&#34; - 它更简单,谢谢