2016-01-17 18 views
13

私はDIのvNext実装を使用しています。 コンストラクタにパラメータを渡すにはどうすればよいですか? は例えば、私はクラスを持っている:ASP.NET 5依存関係注入、パラメータ付き注入

public class RedisCacheProvider : ICacheProvider 
{ 
    private readonly string _connectionString; 

    public RedisCacheProvider(string connectionString) 
    { 
     _connectionString = connectionString; 
    } 
    //interface methods implementation... 
} 

とサービスレジスタ:

services.AddSingleton<ICacheProvider, RedisCacheProvider>(); 

RedisCacheProviderクラスのコンストラクタにパラメータを渡す方法は?

builder.RegisterType<RedisCacheProvider>() 
     .As<ICacheProvider>() 
     .WithParameter("connectionString", "myPrettyLocalhost:6379"); 

答えて

34

あなたは手動であなたのキャッシュ・プロバイダーをインスタンス化したり、直接インスタンスを提供するために、デリゲートを提供することができ、次のいずれか:

services.AddSingleton<ICacheProvider>(provider => new RedisCacheProvider("myPrettyLocalhost:6379")); 

services.AddInstance<ICacheProvider>(new RedisCacheProvider("myPrettyLocalhost:6379")); 
+0

あなたは、コンストラクタのパラメータが可変である場合は、その方法を行うだろうAutofacため例えば 型DbContextを返します。たとえば、 'public class StateService:IStateService { private BloggingContext _context; Public StateService(BloggingContextコンテキスト) { _context = context; } 公開IEnumerable List() { return _context.States.ToList(); } } ' – nam

+0

@namこれを見てください。スコープ付きサービスを追加する方法について説明しています。 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection – ArcadeRenegade

関連する問題