Cem*_*mre 4 c# asp.net asp.net-core
在我的Startup.cs课程中,我有以下配置构建,初始化db上下文:
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", true, true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json",true)
.AddEnvironmentVariables();
Configuration = builder.Build();
NHibernateUnitOfWork.Init(Configuration["ConnectionStrings:OracleConnection"]);
Run Code Online (Sandbox Code Playgroud)
NHibernateUnitOfWork作为类库项目位于不同的项目中.我希望能够注入(或以某种方式传递设置)而不是NHibernateUnitOfWork.Init在我的Startup.cs类中使用.
我可以在我的类库中构建appsettings但是试图避免这种情况.
什么是理智的方式来做到这一点?
你可以注射它.
在您的Startup.cs课程中,您可以将以下内容添加到您的ConfigureServices(IServiceCollection services)方法中:
services.AddSingleton(Configuration);
Run Code Online (Sandbox Code Playgroud)
从那里,您可以使用构造函数注入并以与通常相同的方式向下游使用它:
public class SomeClass
{
public SomeClass(IConfigurationRoot configuration)
{
NHibernateUnitOfWork.Init(Configuration["ConnectionStrings:OracleConnection"]);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:此假定Configuration在您的Startup.cs班级中定义:
public static IConfigurationRoot Configuration;
Run Code Online (Sandbox Code Playgroud)
请参阅: 读取 .NET Core 测试项目中的 appsettings json 值
本质上,这是一个使用 TestServer 的集成解决方案。但如果您必须使用该配置,那么无论如何它可能应该是一个集成测试。
在测试项目中使用主项目中的配置的关键如下:
"buildOptions": {
"copyToOutput": {
"include": [ "appsettings.Development.json" ]
}
}
Run Code Online (Sandbox Code Playgroud)
需要进入主项目的project.json
| 归档时间: |
|
| 查看次数: |
4513 次 |
| 最近记录: |