AutoFac - 每个依赖项的SingleInstance

时间:2017-05-31 09:55:52

标签: c# model-view-controller autofac

AutoFac是否可以拥有SingleInstancePerCondition()。 我有两个网站在一个IIS网站上运行,我想有2个我的界面实例。

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
{
}

1 个答案:

答案 0 :(得分:4)

您可以按名称注册两个实例:

builder.RegisterType<SiteABackofficeUserService>()
       .Named<IBackofficeUserService>("SiteA")
       .SingleInstance();

builder.RegisterType<SiteBBackofficeUserService>()
       .Named<IBackofficeUserService>("SiteB")
       .SingleInstance();

然后访问:

container.ResolveNamed<IBackofficeUserService>("SiteA");