C# 用空值序列化字典时YAXLib崩溃

C# 用空值序列化字典时YAXLib崩溃,c#,xml,dictionary,serialization,yaxlib,C#,Xml,Dictionary,Serialization,Yaxlib,在使用序列化对象时,我在YAXLib源代码中发现以下错误: 如果我试图序列化一个包含空值的字典,我会得到一个未处理的nullReference异常 Dictionary<string, object> Dict= new Dictionary<string, object>(); Dict.Add("foo", null); YAXSerializer serializer = new YAXSerializer(typeof (Dictionary&

在使用序列化对象时,我在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
你们有些人也面临同样的问题?
有办法解决吗?

您可以过滤掉空对象,这样它们就不会被送入序列化程序:

var newdata = data.Where(kvp => kvp.Value != null).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
或者,您可以创建一个新对象,并将所有空值设置为该对象的实例:

var newdict = dict.Select(kvp => kvp = new KeyValuePair<string, object>(kvp.Key, kvp.Value == null ? new NullObject() : kvp.Value)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
var newdict=dict.Select(kvp=>kvp=newkeyvaluepair(kvp.Key,kvp.Value==null?new NullObject():kvp.Value)).ToDictionary(kvp=>kvp.Key,kvp=>kvp.Value);

您可以过滤掉空对象,这样它们就不会被送入序列化程序:

var newdata = data.Where(kvp => kvp.Value != null).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
或者,您可以创建一个新对象,并将所有空值设置为该对象的实例:

var newdict = dict.Select(kvp => kvp = new KeyValuePair<string, object>(kvp.Key, kvp.Value == null ? new NullObject() : kvp.Value)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
var newdict=dict.Select(kvp=>kvp=newkeyvaluepair(kvp.Key,kvp.Value==null?new NullObject():kvp.Value)).ToDictionary(kvp=>kvp.Key,kvp=>kvp.Value);

如果避免将空对象添加到字典中,则错误似乎会得到解决。有这些值的原因吗?xml是用户设置的表示形式,我想区分空字符串设置(“”)和完全没有设置(null)似乎如果避免将null对象添加到字典中,错误就会得到解决。有这些值的原因吗?xml是用户设置的表示形式,我想区分空字符串设置(“”)和无设置(null)