【发布时间】:2013-12-31 19:01:51
【问题描述】:
在我坚持使用 OrmLite 的 POCO 对象中,我具有以下属性:
....
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# 中的字典,然后它把所有东西都作为字符串放回去,正如 VS 中的这个异常所示:
因此,我没有将它返回到类中定义的 Int32,而是得到了字符串,这会带来问题。我很确定使用普通 JSON 和 DataContract-approach 不会有这个问题,因为我在其他部分使用 JSON。
我错过了什么吗?
谢谢 =)
【问题讨论】:
-
当您反序列化为
Dictionary<string,object>时,您的所有值都将是字符串。这也是 JSON 序列化程序中的默认行为。为什么不为数据创建一个类型? -
我有一个表应该包含一个设置超类的所有孩子。 Settings 超类包含一些基础数据,然后每个子类包含一些特定数据。但我不想为每个设置子类创建一个表。相反,我想将子类中的属性放入“CustomData”字段中,然后我将其解释为如上所示。
-
如何为所有设置创建一个类并为特定部分使用接口?如果这不可能,您应该使用 int.TryParse 方法而不是直接强制转换。
-
我现在正在使用 int.tryparse。它可以工作,但没有我想的那么干净……而且我看不出接口有什么帮助。我想我只需要坚持尝试解析
标签: c# servicestack ormlite-servicestack