在POCO对象中,我使用OrmLite持久化,我有以下属性:
....
public Dictionary<string, object> CustomData { get; set; }
...
此属性包含数据,例如:
customData.Add("_GooglePassword", "blabla"); // this is a String
customData.Add("_ServerPort", 8093); // this is an Int32
// etc...
它作为JSV保存在数据库中,如下所示:
{_GooglePassword:blabla,_ServerPort:8093}
当我反序列化这个问题,回到C#中的Dictionary,然后它把所有内容都作为字符串返回时,VS中的这个异常显示:
所以,不是让它回到类中定义的Int32,而是得到字符串,这会产生问题。我很确定使用普通的JSON和DataContract方法不会有这个问题,因为我在其他部分使用JSON。
我在这里错过了什么吗?
谢谢=)
答案 0 :(得分:1)
一些有趣的观点指出为什么DTO中的继承是个坏主意from ss author和here。
如果您的设置可以在配置文件中拆分,我建议您在接口/类中拆分每个属性集群,并将它们存储在分离的强类型属性中。
根据您的上下文,如果您只是存储信息而您没有处理或应用业务规则到这些设置,您可能会在属性中收到动态json并将其存储为字符串。这样,您不会仅为存储目的创建一个Settings类。