2 回答
TA贡献1851条经验 获得超3个赞
全局变量和静态变量很糟糕。ASP.NET Core 包含专门为避免这些而内置的 DI,因此不要重新引入它们。正确的做法是使用配置。开箱即用的 ASP.NET Core 应用程序支持通过 JSON(appsettings.json和appsettings.{environment}.json)、命令行、用户机密(也是 JSON,但存储在您的配置文件中,而不是在项目中)和环境变量进行配置。如果您需要其他配置来源,可以使用其他现有的提供程序,或者您甚至可以自己动手使用任何您喜欢的方式。
无论您使用哪个配置源,最终结果都将是来自所有源的所有配置设置进入IConfigurationRoot. 虽然您可以在技术上直接使用它,但最好使用由提供的强类型配置IOptions<T>和类似配置。简单地说,您创建一个代表配置中某个部分的类:
public class FooConfig
{
public string Bar { get; set; }
}
例如,这将对应{ Foo: { Bar: "Baz" } }于 JSON 中的内容。然后,在ConfigureServices中Startup.cs:
services.Configure<FooConfig>(Configuration.GetSection("Foo"));
最后,在您的控制器中,例如:
public class FooController : Controller
{
private IOptions<FooConfig> _config;
public FooController(IOptions<FooConfig> config)
{
_config = config ?? throw new ArgumentNullException(nameof(config));
}
...
}
配置是在启动时读取的,然后技术上存在于内存中,因此您对必须使用 JSON 之类的东西的抱怨在大多数情况下是没有意义的。但是,如果您真的想要完全在内存中,则有一个内存配置提供程序。但是,如果可以,最好将配置外部化。
TA贡献1802条经验 获得超6个赞
好吧,在编译代码之前,双击属性中的 settings.settings。你可以给变量一个名字,一个类型,一个范围(用户是意味着它可以在每次安装时更改,应用程序意味着它将保持原来的值并且不能更改),最后是值。
- 2 回答
- 0 关注
- 346 浏览
添加回答
举报