我是一个有用的助手,可以将文本翻译成中文。
在 startup.cs 文件中,我有以下代码:
在课堂图书馆里。
现在从 index.cshtml 我想调用类 Library Class1。
当然,这样是行不通的,因为没有接受零参数的构造函数,我不认为我应该将IOptions作为参数添加进去。但是,我该如何调用类库来读取连接字符串呢?(当我让它工作后,我当然会读取数据并返回而不是连接字符串)。我已经查看了几个示例,包括net core 2.1依赖注入,但我不明白如何直接使用类库,有必要使用控制器吗?!
我有一个类库,想要从appsettings.json文件中访问Connectionstring。
appsettings.json:
"DatabaseSettings": {
"ConnectionString": "Server=.;Database=Test;Trusted_Connection=True;"
},
在 startup.cs 文件中,我有以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<DatabaseSettings>(Configuration.GetSection("DatabaseSettings"));
services.AddOptions();
services.AddTransient<IConnectionOption, Class1>();
}
在课堂图书馆里。
IConnectionOption.cs
public interface IConnectionOption
{
void ReadValue();
}
Class1.cs
public class Class1 : IConnectionOption
{
private readonly DatabaseSettings test;
public Class1(IOptions<DatabaseSettings> dbOptions)
{
test = dbOptions.Value;
}
public void ReadValue()
{
var r = test;
}
}
现在从 index.cshtml 我想调用类 Library Class1。
public class IndexModel : PageModel
{
public void OnGet()
{
Class1 test = new Class1();
test.ReadValue();
}
}
当然,这样是行不通的,因为没有接受零参数的构造函数,我不认为我应该将IOptions作为参数添加进去。但是,我该如何调用类库来读取连接字符串呢?(当我让它工作后,我当然会读取数据并返回而不是连接字符串)。我已经查看了几个示例,包括net core 2.1依赖注入,但我不明白如何直接使用类库,有必要使用控制器吗?!
IOptions<T>
。但是为什么要将DatabaseSettings
注册为瞬态而不是单例?它永远不会改变。 - StevenGetSection(<string>)
,并在执行期间更改设置时具有热重新加载设置的额外好处:services.AddTransient(provider => provider.GetRequiredService<IOptionsMonitor<DatabaseSettings>>().CurrentValue);
- Mathias R