我最近一直在使用一些可序列化的类,它们通常看起来像这样:
[DataContract]
public class Foo
{
[DataMember(Order = 0)]
public string Bar1
{
get;
set;
}
[DataMember(Order = 1)]
public string Bar2
{
get;
set;
}
}
我想知道,为数据成员指定订单有什么可能的应用程序?指南here指出它可能“有时可能需要更改此订单”。但是不要给出任何时间或原因的例子。你有什么时间或为何需要这样做的例子吗?
在我的应用程序中,我只是序列化这些类型的这些对象并将它们保存到文件中。在这里指定“订单”是否有任何价值,或者只是添加其他东西来维护?如果我只是从每个数据成员中删除“订单”,我会遇到任何问题吗?
答案 0 :(得分:1)
Order
指定将数据成员序列化为对象的顺序,否则它们将按字母顺序排列。
在某些应用程序中,了解数据的顺序很有用 从各种数据成员发送或预计将收到 (例如数据在序列化XML中出现的顺序)。
在向具有预定义对象结构的客户端发送响应时,您希望订购数据成员的方案之一。
例如,请参阅此question。
有时您可能有兴趣首先显示ID字段(或类似字段),然后显示所有其他字段,以使原始xml看起来最终用户友好。
是的,如果你不提及订单,你不会得到任何错误。
参考文档here
答案 1 :(得分:0)
在我工作的地方,我们有一个 C# API,它与第三方系统接口,该系统使用一种不寻常的数据库交互方法,其中字段顺序非常重要。将表示该系统中表中记录的对象序列化为该系统可以理解的格式时,在 C# 中表示此顺序对我们很有用。
简而言之,如果顺序对任何消耗对象序列化数据的“事物”很重要,它就会很有用。