List
使序列化字节数组相同的最简单方法是什么?写一个SerializationSurrogate?在序列化字节数组中查找字段并将其设置为零?手动遍历对象图并使用反射将_version设置为零?我可以使用任何序列化属性吗?也许使用不同的收集类,哪个?
https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs
编辑:添加了澄清代码:
List<string> l1 = new List<string>();
List<string> l2 = new List<string>();
l1.Add("Hi");
l2.Add("Hi");
l2.Clear();
l2.Add("Hi");
byte[] b1 = Serialize(l1);
byte[] b2 = Serialize(l2); // Contents of b2 will not be the same as b1
public byte[] Serialize(object o)
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream,o);
return stream.ToArray();
}
}
// One UGLY way,I'm not happy with
private void ClearListVersion(object list)
{
if (list == null) return;
FieldInfo fieldInfo = list.GetType().GetField("_version",Bindingflags.NonPublic | Bindingflags.Instance);
fieldInfo.Setvalue(list,0);
}