我在博客中使用SerializableDictionary
類,我也在使用一些複雜類型進行序列化。不幸的是,我收到一個錯誤,不知道如何解決這個問題。序列化字典<string,object>包含列表<string>作爲值
有一點需要注意的是,我使用的是單聲道,因爲我使用的是Unity3D。我不知道這是否使這個問題不同,我還沒有測試.net是否也返回這個錯誤。
這是堆棧跟蹤的上半部分:
InvalidOperationException: The type of the argument object 'System.Collections.Generic.List`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' is not primitive.
System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive (System.String name, System.String ns, System.Object o, Boolean xsiType)
namespace Foo
{
class Program
{
static void Main(string[] args)
{
Foo f = new Foo();
string result = f.Serialize();
Console.WriteLine(result);
Console.ReadLine();
}
}
class Foo
{
private SerializableDictionary<string, object> dict;
public Foo()
{
dict = new SerializableDictionary<string, object>();
dict.Add("list", new List<string>() { "test1", "test2" });
}
public string Serialize()
{
XmlSerializer x = new XmlSerializer(dict.GetType(), new Type[] {typeof(List<string>)});
StringWriter w = new StringWriter();
x.Serialize(w, dict);
return w.ToString();
}
}
}
UPDATE:
我在.NET中創建一個測試程序,它告訴我,{「類型系統.Collections.Generic.List`1 [[System.String,...]]可能不在此上下文中使用。「}。
我已經更新了上面的示例代碼。
添加typeof(列表)沒有幫助不幸。 –
Marnix
恐怕我們不能幫助你沒有產生錯誤的內部類的樣本。 – mswietlicki
我用新的示例代碼更新了我的問題,該代碼返回錯誤。 – Marnix