我正在使用DI的vNext实现。
如何将参数传递给构造函数?
例如,我上课:
public class RedisCacheProvider : ICacheProvider
{
private readonly string _connectionString;
public RedisCacheProvider(string connectionString)
{
_connectionString = connectionString;
}
//interface methods implementation...
}
和服务注册:
services.AddSingleton<ICacheProvider, RedisCacheProvider>();
如何将参数传递给RedisCacheProvider类的构造函数?
例如对于Autofac:
builder.RegisterType<RedisCacheProvider>()
.As<ICacheProvider>()
.WithParameter("connectionString", "myPrettyLocalhost:6379");
最佳答案
您可以提供一个委托(delegate)来手动实例化您的缓存提供程序,也可以直接提供一个实例:
services.AddSingleton<ICacheProvider>(provider => new RedisCacheProvider("myPrettyLocalhost:6379"));
services.AddSingleton<ICacheProvider>(new RedisCacheProvider("myPrettyLocalhost:6379"));
请注意,容器不会显式处理手动实例化的类型,即使它们实现了IDisposable。有关更多信息,请参见有关Disposal of Services的ASP.NET Core文档。