通过依赖注入获取连接字符串
Get Connection String through Dependency Injection
我正在开发一个 blazor 应用程序。我想要 class 中的连接字符串和其他一些键作为服务。
为此我创建了一个界面
interface IDbConnector
{
string ConnectionString { get; set; }
bool SomeKey { get; set; }
}
在我的 class 中,我想要类似的东西
using Microsoft.Extensions.Configuration;
public class DbConnector : IDbConnector
{
private IConfiguration Configuration { get; set; }
public DbConnector(IConfiguration configuration)
{
Configuration = configuration;
}
public string ConnectionString = Configuration.GetConnectionString();
public bool SomeKey = Configuration.GetSection("xyz");
}
我可以将其注册为
的服务
services.AddScoped<IDbConnector, DbConnector>();
但是在 DbConnector class 里面它说
A fiels initializer can not refrence the non static field ,method or
property DbConnector.Configuration
请原谅我的编码模式,因为我是 DI 概念的新手。请建议是否有另一种更好的方法来做到这一点。
services.AddConfiguration() // enable Configuration Services
var config = new WeblogConfiguration();
Configuration.Bind("Weblog", config); // <--- This
services.AddSingleton(config);
您犯了一个语法错误,这些应该是表达式主体 属性 访问器。 =
至 =>
public string ConnectionString => Configuration.GetConnectionString();
public bool SomeKey => Configuration.GetSection("xyz");
相反,您尝试将它们初始化为字段。字段初始化 pre-constructor,因此无法访问配置。
我正在开发一个 blazor 应用程序。我想要 class 中的连接字符串和其他一些键作为服务。
为此我创建了一个界面
interface IDbConnector
{
string ConnectionString { get; set; }
bool SomeKey { get; set; }
}
在我的 class 中,我想要类似的东西
using Microsoft.Extensions.Configuration;
public class DbConnector : IDbConnector
{
private IConfiguration Configuration { get; set; }
public DbConnector(IConfiguration configuration)
{
Configuration = configuration;
}
public string ConnectionString = Configuration.GetConnectionString();
public bool SomeKey = Configuration.GetSection("xyz");
}
我可以将其注册为
的服务services.AddScoped<IDbConnector, DbConnector>();
但是在 DbConnector class 里面它说
A fiels initializer can not refrence the non static field ,method or property DbConnector.Configuration
请原谅我的编码模式,因为我是 DI 概念的新手。请建议是否有另一种更好的方法来做到这一点。
services.AddConfiguration() // enable Configuration Services
var config = new WeblogConfiguration();
Configuration.Bind("Weblog", config); // <--- This
services.AddSingleton(config);
您犯了一个语法错误,这些应该是表达式主体 属性 访问器。 =
至 =>
public string ConnectionString => Configuration.GetConnectionString();
public bool SomeKey => Configuration.GetSection("xyz");
相反,您尝试将它们初始化为字段。字段初始化 pre-constructor,因此无法访问配置。