2017-05-31 12 views
1

AutoFacで可能なのはSingleInstancePerCondition()ですか? 私は1つのIIS Webサイトで実行される2つのWebサイトを持っています。私は2つのインスタンスを持っていたいと思います。AutoFac - 依存する1つのインスタンス

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

答えて

3

あなたは名前で2つのインスタンスを登録することができます:

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

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

、次にアクセス:

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

は私のコントローラのコンストラクタパラメータにそれらのnammedパラメータを注入することは可能です、ありがとう! – user2003035

関連する問題