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"); 
+0

谢谢你,难道还要注入那些nammed参数代入我的控制器的构造函数的参数? – user2003035