AutoFac - 每个依赖项的单一实例
问题描述:
AutoFac有可能拥有SingleInstancePerCondition()
。 我有两个网站在单个IIS网站上运行,我想要有2个我的界面实例。AutoFac - 每个依赖项的单一实例
protected void Setup(ContainerBuilder builder)
{
builder.Register(CreateBackofficeUserService)
.As<IBackofficeUserService>()
.SingleInstance()
}
private static IBackofficeUserService CreateBackofficeUserService(IComponentContext context)
{
var siteName = Context.GetSiteName();
if (siteName == "SiteA")
return new SiteABackofficeUserService();
else if (siteName == "SiteB")
return new SiteBBackofficeUserService();
else
return null;
}
public interface IBackofficeUserService
{
}
public class SiteABackofficeUserService : IBackofficeUserService
{
}
public class SiteBBackofficeUserService : IBackofficeUserService
{
}
答
您可以通过名称注册两个实例:
builder.RegisterType<SiteABackofficeUserService>()
.Named<IBackofficeUserService>("SiteA")
.SingleInstance();
builder.RegisterType<SiteBBackofficeUserService>()
.Named<IBackofficeUserService>("SiteB")
.SingleInstance();
,然后访问:
container.ResolveNamed<IBackofficeUserService>("SiteA");
谢谢你,难道还要注入那些nammed参数代入我的控制器的构造函数的参数? – user2003035