Razor Pages 3.1 配置注入 class

Razor Pages 3.1 configuration injection into class

配置注入在我保存代码的简单 class(不是从 PageModel 继承)中不起作用

尽管有此代码:

private readonly IConfiguration _configuration;

public MyClass(IConfiguration configuration){
_configuration = configuration;
}

class 一旦初始化为一个对象总是要求参数 configuration,它应该由框架注入。这就是 Razor Pages 的工作原理 - classes 继承自 PageModel.

Program.csStartup.cs 中的所有配置都是标准的,与 Visual Studio 创建的一样。我使用 Visual Studio 16.4.5 和 ASP.NET Core 3.1.

我怎样才能完成这项工作?

如果你在自定义 class 中注入 IConfiguration ,你可以将你的 class 注册到 DI 中,这样它有助于解决依赖关系:

services.AddTransient<CustomClass>();

然后在要使用自定义 class 的地方定义实例,例如,在索引页中:

private readonly ILogger<IndexModel> _logger;
private CustomClass _myClass;
public PrivacyModel(ILogger<IndexModel> logger, CustomClass myClass)
{
    _logger = logger;
    _myClass = myClass;
}

public void OnGet()
{
    var connectString=   _myClass.getConnectString();
}

你的class:

public class CustomClass
{
    private IConfiguration _configuration;

    public CustomClass(IConfiguration configuration) {
        _configuration = configuration;

    }

    public string getConnectString() {

        return  _configuration.GetValue<string>("ConnectionStrings:DefaultConnection"); ;
    }
}

您也可以像这样尝试使用 [inject] 属性:

    [Inject]
    private IConfiguration Config { get; set; }

这应该将您的 IConfiguration 注入到 class 中的 属性。