C# 使用Autofac在运行时基于另一个对象的值将对象注入
如何使用Autofac在运行时基于另一个对象的值将对象注入 我想做下面这样的事情,在这里我可以注册每个AggregateQuoteManager,并在运行时根据从ITenancyContext获得的租约调用所需的AggregateQuoteManagerC# 使用Autofac在运行时基于另一个对象的值将对象注入,c#,dependency-injection,autofac,C#,Dependency Injection,Autofac,如何使用Autofac在运行时基于另一个对象的值将对象注入 我想做下面这样的事情,在这里我可以注册每个AggregateQuoteManager,并在运行时根据从ITenancyContext获得的租约调用所需的AggregateQuoteManager builder.RegisterType<AggregateQuoteManagerTenancyA>().Named<IAggregateQuoteManager>("aggregateQuoteManager
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>();
我采用了Travis Illig的方法-另一个对象看起来像租户标识符。您尝试过Autofac多租户支持吗?-它简单多了,谢谢你那么,有什么问题吗?您的代码示例是否有效?另外,与以下问题无关:如果Autofac已经是依赖项解析程序,则不要在lambda中使用DependencyResolver.Current.GetService。解析入站组件上下文中的所有内容。另一个对象看起来像租户标识符。您是否尝试过Autofac多租户支持?