私はSerializableDictionary
ブログのクラスを使用しており、シリアル化するためにいくつかの複雑な型も使用しています。残念ながら、エラーが表示され、これを解決する方法がわかりません。
注意すべきことの 1 つは、Unity3D を使用しているため、Mono を使用していることです。これによりこの問題が異なるかどうかはわかりません.netもこのエラーを返すかどうかはまだテストしていません。
これは、スタック トレースの上部です。
InvalidOperationException: 引数オブジェクト 'System.Collections.Generic.List`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' の型はプリミティブではありません。
System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive (System.String 名、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();
}
}
}
更新:
.NET でテスト プログラムを作成したところ、{"型 System.Collections.Generic.List`1[[System.String,...]] はこのコンテキストでは使用できない可能性がある" と表示されます。 } .
上記のサンプルコードを更新しました。