我正在使用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文档。

07-27 20:13