0

非プリミティブ値を含む辞書をシリアル化しようとしています。IXmlSerializable を実装することにより、ディクショナリをシリアル化するための通常のアプローチを使用しています。WriteXML メソッド内で、非プリミティブ値を文字列に変換します (これがどのように変換されるかは関係ありませんが、その部分は機能しています)。ReadXML 内で、逆シリアル化された値 (文字列) を元の型に変換します。

ただし、この方法では次のエラーがスローされます。

これは、値がプリミティブではないためだと思います。ただし、シリアル化されていないため(代わりに文字列に変換されているため)、シリアル化可能である必要はありません。これを回避する方法はありますか?

私はジェネリックを使用していることに言及する必要があり、ランタイムはMono環境です。クラス定義は次のようになります。

public class SerializableRefDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable where TValue : NonPrimitiveObject
4

1 に答える 1

3

Dictionary 内のオブジェクトのタイプが問題の原因ではないようです。Dictionary からクラスを継承している場合は、クラスに実装する必要があります

public void Add(object o);

この答えを見たことがありますか?

于 2012-10-19T12:18:29.397 に答える