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.cs
和 Startup.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 中的 属性。
配置注入在我保存代码的简单 class(不是从 PageModel
继承)中不起作用
尽管有此代码:
private readonly IConfiguration _configuration;
public MyClass(IConfiguration configuration){
_configuration = configuration;
}
class 一旦初始化为一个对象总是要求参数 configuration
,它应该由框架注入。这就是 Razor Pages 的工作原理 - classes 继承自 PageModel
.
Program.cs
和 Startup.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 中的 属性。