我正在编写一个基本的应用程序来学习 ASP.NET 5。我发现一个非常令人困惑的领域是配置。在 ASP.NET 5 之前,我可以执行以下操作:
var settingValue = ConfigurationManager.AppSettings["SomeKey"];
我会在我的代码中散布这样的代码行。现在,在 vNext 世界中,我有一个如下所示的 config.json 文件:
config.json
{
"AppSettings": {
"SomeKey":"SomeValue"
}
}
然后在 Startup.cs 中,我有以下内容: Startup.cs
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment environment)
{
Configuration = new Configuration()
.AddJsonFile("config.json");
}
从那里,我完全被难住了。我在/src/Website/Code/Models/MyClass.cs 中有 MyClass.cs。
MyClass.cs
public class MyClass
{
public string DoSomething()
{
var result = string.Empty;
var keyValue = string.Empty; // TODO: What do I do here? How do I get the value of "AppSettings:SomeKey"?
return result;
}
}
如何获取“AppSettings:SomeKey”的值?
最佳答案
ASP.NET 5 大量使用依赖注入(inject),因此如果您也使用依赖注入(inject),那么这非常简单。如果您检查示例 MVC6 项目,您可以看到它是如何工作的:
首先,在 Properties 中定义了一个 AppSettings 类,它是您的类支持的选项的强类型版本。在示例项目中,这仅包含 SiteTitle。
public class AppSettings
{
public string SiteTitle { get; set; }
}
然后,这个类在ConfigureServices中通过依赖注入(inject)被初始化。 Configuration
这里是您在 Startup 类的构造函数中创建的。
public void ConfigureServices(IServiceCollection services)
{
services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings"));
// ...
}
然后,假设您的类是由依赖项注入(inject)容器实例化的,您只需请求一个 IOptions,您就会得到一个。例如,在 Controller 中您可以具有以下内容:
public class HomeController
{
private string _title;
public HomeController(IOptions<AppSettings> settings)
{
_title = settings.Options.SiteTitle;
}
}
关于c# - ASP.NET 5 (vNext) - 获取配置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30263681/