【发布时间】:2016-04-06 14:55:01
【问题描述】:
我正在使用YAXLib 来序列化我的对象,我在 YAXLib 源代码中发现了以下错误:
如果我尝试序列化包含空值的字典,则会收到未处理的 nullReference 异常。
Dictionary<string, object> Dict= new Dictionary<string, object>();
Dict.Add("foo", null);
YAXSerializer serializer = new YAXSerializer(typeof (Dictionary<string, object>));
serializer.SerializeToFile(Dict, "path"); // << CRASH
在 YAXSerializer.cs 中深入运行我发现了以下代码:
foreach (object obj in dicInst) //dicInst is the Dict variable defined above
{
...
// valueObj is null
XElement addedElem = AddObjectToElement(elemChild, valueAlias, valueObj);
...
}
private XElement AddObjectToElement(XElement elem, XName alias, object obj)
{
//obj is null and so obj.GetType() crash
UdtWrapper udt = TypeWrappersPool.Pool.GetTypeWrapper(obj.GetType(), this);
...
}
你们中的一些人也遇到过同样的问题? 有办法解决吗?
【问题讨论】:
-
如果您避免将空对象添加到字典中,似乎会处理该错误。你有这些价值观是有原因的吗?
-
xml是用户设置的表示,我想区分空字符串设置(“”)和根本没有设置(null)
标签: c# xml dictionary serialization yaxlib