我正在尝试将 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>();
}
}
但是这段代码失败了:
键入“System.Collections.Generic.HashSet`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”,数据合同名称为“ArrayOfint: http://schemas.microsoft。 com/2003/10/Serialization/Arrays '不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中
我绝对不想碰这条线:
public ISet<int> TestSet = new HashSet<int>();
除此之外,由于某些其他原因(该类型实际上不是哈希集),我不允许 HashSet 作为这种情况下的已知类型。我应该怎么办 ?