ServiceStack和JSV:当我序列化Dictionary <string,object =“”>反序列化时,“对象”的类型丢失</string,>

时间:2013-12-01 16:36:12

标签: c# servicestack ormlite-servicestack

在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中的这个异常显示:

enter image description here

所以,不是让它回到类中定义的Int32,而是得到字符串,这会产生问题。我很确定使用普通的JSON和DataContract方法不会有这个问题,因为我在其他部分使用JSON。

我在这里错过了什么吗?

谢谢=)

1 个答案:

答案 0 :(得分:1)

一些有趣的观点指出为什么DTO中的继承是个坏主意from ss authorhere

如果您的设置可以在配置文件中拆分,我建议您在接口/类中拆分每个属性集群,并将它们存储在分离的强类型属性中。

根据您的上下文,如果您只是存储信息而您没有处理或应用业务规则到这些设置,您可能会在属性中收到动态json并将其存储为字符串。这样,您不会仅为存储目的创建一个Settings类。