【问题标题】:AutoFac - SingleInstance per dependencyAutoFac - 每个依赖项的 SingleInstance
【发布时间】:2017-05-31 19:05:57
【问题描述】:

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

【问题讨论】:

    标签: c# model-view-controller autofac


    【解决方案1】:

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

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

    然后访问:

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

    【讨论】:

    • 谢谢,是否仍然可以将这些命名参数注入到我的控制器的构造函数参数中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2017-08-02
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多