C#:使用通用字典<key,object>来保存混合类型的设置并返回正确的值和类型转换

vir*_*ore 2 c# dictionary casting object-type

我正在尝试实现一个类,以优雅和易于维护的方式保存用户设置.有几种可能的设置列表,包括几种类型的设置(int,double,string等...).我试图使用字典,但由于我的类型是混合的,我使用通用对象类型作为键返回值.我还有另一个字典,其中包含与每个设置相关联的类型以供参考.我的问题是我希望创建一个查找函数,它不仅返回特定的设置值,还将其正确地转换为适当的类型.由于我的字典包含对象类型,我的函数也必须返回对象类型.但我试图避免为每个可能的设置键入Get和Set.是否有一个优雅的解决方案(甚至可能涉及输入更多代码),任何人都可以分享?

Tim*_*lds 6

对于快速轻量级的解决方案,您应该考虑使用dynamic值类型:

var settings = new Dictionary<string, dynamic>();
settings["FavoriteWidget"] = "Gizmo";
settings["Weight"] = 0.5

string favoriteWidget = settings["FavoriteWidget"];
double weight = settings["Weight"];
Run Code Online (Sandbox Code Playgroud)

您可以dynamic在这里阅读更多信息:使用Type dynamic(C#编程指南)