J'utilise l'implémentation vNext de DI. Comment passer des paramètres au constructeur? Par exemple, j'ai une classe:
public class RedisCacheProvider : ICacheProvider
{
private readonly string _connectionString;
public RedisCacheProvider(string connectionString)
{
_connectionString = connectionString;
}
//interface methods implementation...
}
Et registre de service:
services.AddSingleton<ICacheProvider, RedisCacheProvider>();
Comment passer un paramètre au constructeur de la classe RedisCacheProvider? Par exemple pour Autofac:
builder.RegisterType<RedisCacheProvider>()
.As<ICacheProvider>()
.WithParameter("connectionString", "myPrettyLocalhost:6379");
Vous pouvez soit fournir un délégué pour instancier manuellement votre fournisseur de cache, soit fournir directement une instance:
services.AddSingleton<ICacheProvider>(provider => new RedisCacheProvider("myPrettyLocalhost:6379"));
services.AddSingleton<ICacheProvider>(new RedisCacheProvider("myPrettyLocalhost:6379"));
Veuillez noter que le conteneur ne supprimera pas explicitement les types instanciés manuellement, même s'ils implémentent IDisposable. Consultez le document ASP.NET Core sur Disposition des services pour plus d'informations.