【发布时间】:2019-10-16 18:09:22
【问题描述】:
如何在由 .NET Core 3 框架实例化的模型上为属性设置默认值,从我的 appsettings.json 文件中读取它?
我创建了一个 repo(一个全新的 .NET Core 3 项目),我试图在其中说明问题:https://github.com/NelsonPRSousa/dependency-injection-default-constructor
API 操作:
[HttpGet]
public IEnumerable<WeatherForecast> Get([FromQuery] FilteringRequestModel request)
{
var defaultType = request.Type;
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
型号:
public class FilteringRequestModel
{
/* Please note that we must have a parameterless constructor, since it's the framework responsability to instatiate this object
* when invoking this action: IEnumerable<WeatherForecast> Get([FromQuery] FilteringRequestModel request)
*/
public FilteringRequestModel()
{
//Type = System.Configuration.ConfigurationManager.AppSettings["DefaultTypeTopRated"];
}
public string Type { get; set; } = "top_rated"; // TODO: Read from appsettings
}
【问题讨论】:
-
为什么你的构造函数中的设置被注释掉了?
-
因为不行所以返回null
-
不应该。请在实例化类实例的行上放置一个调试点,并在该点检查对象属性。您没有在代码中显示这一点。传递给“Get”方法的对象可能没有设置该属性。所以,从你有
var request = new FilteringRequestModel()的地方开始,然后在你的调试器中前进。 -
我没有实例化 FilteringRequestModel。当我们调用 Get 端点时,这项工作是 .NET Core 框架的职责。我这里有所有代码:github.com/NelsonPRSousa/…(只是一个简单的控制器 + 模型)
标签: c# dependency-injection .net-core