以下のコードとして HashSet をシリアライズしようとしています。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
namespace ConsoleApplication20
{
class Program
{
static void Main(string[] args)
{
var sr = new DataContractSerializer(typeof(Test));
var t = new Test();
var mem = new MemoryStream();
sr.WriteObject(mem, t);
}
}
[DataContract]
public class Test
{
[DataMember]
public ISet<int> TestSet = new HashSet<int>();
}
}
しかし、このコードは失敗します:
データ コントラクト名 'ArrayOfint: http://schemas.microsoft. com/2003/10/Serialization/Arrays ' は想定されていません。DataContractResolver の使用を検討するか、既知の型のリストに静的に知られていない型を追加します
私は間違いなくこの行に触れたくありません:
public ISet<int> TestSet = new HashSet<int>();
それに加えて、他の理由 (タイプは実際にはハッシュセットではありません) により、この場合の既知のタイプとして HashSet を使用することはできません。私は何をすべきか ?