.NET读取配置时Dictionary类型属性始终为null的问题
问题原因与解决方案
你的问题出在配置结构和C#类定义不匹配:
当前appsettings中
Providers是一个包含DefaultCode和Url的普通对象,但你在CurrencyConfiguration里把它定义为Dictionary<string, CurrencyProvider>。配置绑定系统无法把单个对象映射到字典类型,所以Providers会被设为null。正确的配置结构应该把
Providers改成键值对形式,每个键对应一个CurrencyProvider实例,示例如下:
{ "Currency": { "DefaultCode": "EUR", "Url":"some url", "Providers": { "EuroProvider": { "DefaultCode": "EUR", "Url":"some url" }, "UsdProvider": { "DefaultCode": "USD", "Url":"another url" } } } }
- 如果你的实际需求是
Providers只对应单个配置(而非多个提供者),那应该修改C#类定义,把Providers的类型从Dictionary<string, CurrencyProvider>改为CurrencyProvider,这样就能正常绑定。
验证方法:修改配置后重新运行,Providers会被正确填充为包含对应键值的字典。
内容的提问来源于stack exchange,提问作者Mark1337
相关产品推荐
相关产品推荐

