.NET Core无法从appsettings.json读取对象问题排查
问题原因及解决办法
你的配置反序列化失败、属性值均为默认值的问题,核心出在配置绑定的访问权限限制,还有一处可选的代码优化点:
1. Preset类的属性权限错误
.NET Core配置绑定器(Get<T>()方法)仅能访问**公共(public)**属性,你定义的Preset类中Width、Height、Fit都是默认私有(private)属性,绑定器无法读取配置值并为其赋值,因此这些属性会保持类型默认值(int为0,bool为false)。
修改后的Preset类:
public class Preset { public int Width { get; set; } public int Height { get; set; } public bool Fit { get; set; } }
2. ImagePresets构造函数的实例共享问题(可选优化)
你在ImagePresets构造函数中,将所有预设属性指向同一个Preset实例:
FeaturedLocation = SearchListing = Large = PropertyPage = new Preset();
这会导致所有预设共享同一个对象,后续修改任意一个预设的属性值,其他预设也会同步变化。建议改为每个属性单独实例化:
public ImagePresets() { SearchListing = new Preset(); PropertyPage = new Preset(); Large = new Preset(); FeaturedLocation = new Preset(); }
验证修改后的读取逻辑
保持原读取代码不变即可正常工作:
ImagePresets _presets = _config.GetSection("image:ImagePresets").Get<ImagePresets>();
内容的提问来源于stack exchange,提问作者kalbsschnitzel
相关产品推荐
相关产品推荐

