听起来您正在使用BinaryFormatter
,坦率地说,在这种情况下,我认为最有价值的建议是:不要那样做。的数据格式从BinaryFormatter
根本上与您的确切实现细节相关联,因此很难:a:在不同的端有不同的代码(意思是:部署非常困难和脆弱 - 到处都需要同时更改),或者 b:修改随着时间的推移实施。
坦率地说,我强烈建议寻找替代的序列化工具。我有很大的偏见,但 protobuf-net非常适合这种情况;它仍然是“二进制”(意思是:不是文本),但它与内部实现细节无关。它快速(通常比 快得多BinaryFormatter
)、高效(通常需要的带宽比 少得多BinaryFormatter
)、免费并且通常很容易应用于现有的对象模型;它通常意味着从此开始:
[Serializable]
public class Custom {
public int Id {get;set;}
public string Name {get;set;}
// ...etc
}
对此:
[ProtoContract] // you can keep the [Serializable] for compat if you want
public class Custom {
[ProtoMember(1)]
public int Id {get;set;}
[ProtoMember(2)]
public string Name {get;set;}
// ...etc
}