配置注入在我保存代码的简单类(不是从PageModel
继承的(中不起作用
尽管有这个代码:
private readonly IConfiguration _configuration;
public MyClass(IConfiguration configuration){
_configuration = configuration;
}
一旦初始化为对象,类总是要求参数configuration
,该参数将由框架注入。这就是Razor Pages的工作原理——继承自PageModel
的类。
Program.cs
和Startup.cs
中的所有配置都是Visual Studio创建的标准配置。我使用Visual Studio 16.4.5和ASP.NET Core 3.1。
我怎样才能做到这一点?
您也可以尝试使用[inject]
属性,如:
[Inject]
private IConfiguration Config { get; set; }
这应该将您的IConfiguration注入到类中的属性中。
如果在自定义类中注入IConfiguration
,则可以将类注册到DI中,这样可以帮助解决依赖关系:
services.AddTransient<CustomClass>();
然后定义要在其中使用自定义类的实例,例如,在索引页中:
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();
}
你的班级:
public class CustomClass
{
private IConfiguration _configuration;
public CustomClass(IConfiguration configuration) {
_configuration = configuration;
}
public string getConnectString() {
return _configuration.GetValue<string>("ConnectionStrings:DefaultConnection"); ;
}
}