2016-04-06 17 views
1

değerleri, ben YAXLib kaynak kodunda aşağıdaki hata bulmak:YAXLib kazasında Boş ile serialize sözlük benim nesneleri seri için <a href="https://github.com/sinairv/YAXLib" rel="nofollow">YAXLib</a> kullanıyorum

I got boş değer içeriyorsa bir sözlük seri çalışırsanız işlenmemiş bir nullReference istisnası. Bazılarınız aynı sorunla karşı karşıya

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); 
    ... 
} 

:

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 derin Koşu Ben aşağıdaki kodu buldum? Bunu çözmenin bir yolu var mı? onlar serileştiriciye beslenen değildir ki

+0

Sözlüğünüze boş nesneler eklemekten kaçındığınızda hataya dikkat edilmelidir. Bu değerlere sahip olmanın bir sebebi var mı? – Kateract

+0

xml, kullanıcı ayarının temsilidir ve boş dize ayarı ("") ile hiç bir ayar (null) arasında ayrım yapmak isterim – Rowandish

cevap

0

Sen boş nesneler filtreleyebilirsiniz:

var newdata = data.Where(kvp => kvp.Value != null).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); 

Veya yeni bir nesne oluşturmak ve bu nesnenin örneklerine tüm boş değerler ayarlayabilirsiniz:

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); 
İlgili konular