问题标签 [iextensibledataobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - XmlSerializer 等效于 IExtensibleDataObject
使用 DataContracts,您可以从 IExtensibleDataObject 派生以允许往返工作,而不会丢失 XML 文件中任何未知的附加数据。
我不能使用 DataContract,因为我需要控制输出 XML 的格式。但我还需要能够在旧版本的应用程序中读取未来版本的 XML 文件,而不会丢失 XML 文件中的任何数据。
例如
XML v1:
XML v2:
如果从我的应用程序的 v1 读取 XML v2 文件,再次反序列化和序列化它会将其转换为 XML v1 文件。即“年龄”字段被删除。
是否有任何类似于 IExtensibleDataObject 的东西可以与 XmlSerializer 一起使用以避免 Age 字段消失?
c# - IExtensibleDataObject 在客户端的使用
我已将我的 Web 服务转换为具有一些数据合同的 wcf 服务。作为最佳实践,提到并建议 DataContracts 应该从 IExtensibleDataObject 继承。我的意思是,在添加或删除数据成员的情况下,IExtensibleDataObject 很有帮助。但我无法了解客户将如何访问已删除的数据成员。这是我的代码:
现在,在我的下一个 Web 服务版本中,我对 DataContract 进行了一些更改
但是,正在访问旧版本 Web 服务的客户端现在由于未提供 MiddleName 字段而出现错误。我仍然对 IExtensionDataObject 的使用感到困惑。
wcf - IExtensibleDataObject 实现向前和向后兼容性
我没有在服务器的 DC 中实现这个接口。
虽然我在客户端自动获得了 VS2008 生成的这个实现,但这很好。
现在我去编辑我的 Reference.cs 以包含一个新字段(区分特定服务方法的服务器 DC(输入参数))
编译,运行指向旧服务的代码,尽管我将新字段的值(示例布尔类型为 true)设置为忽略我的值,但它工作得很好。
那为什么要在服务器上实现 DC
我期待前向兼容性,它工作正常。
现在我删除了我在#3 中添加的代码。编译。
而是在服务器 DC 编译中添加了相同的字段。
现在我运行从客户端向服务器发送较少数据的代码 DC 有更多列。它工作正常。这意味着向后兼容性工作正常吗?
希望有些地方我的理解不正确?
我的环境是.Net 3.5 Sp1
c# - 更改 Json 或 ExtensionDataObject
我有一个无法更改的 Json 服务,因为它不是我的。他们的 Json 以一种难以解析的方式格式化。它看起来像这样。
我真的更希望它像 JSon 数组一样布局,但目前不是。我想知道这里最好的方法。我应该在解析它之前将 Json 更改为看起来像一个数组还是加载 ExtensionData 并从中解析它?
提要中还有其他我没有问题的项目。只是坚持这一节。
谢谢
c# - 可移植类库中的 DataContract 模型不可扩展?
我正在创建一个面向 .Net 4.5+、Silverlight 5+ 和 Windows 8+ 应用商店应用的便携式类库。该库包括模型对象,这些对象将被序列化和反序列化为文件,以便在实现应用程序之间传输。虽然可移植类库支持DataContractAttribute
和DataContractSerializer
,但它们不支持IExtensibleDataObject
- 推荐用于前向兼容数据协定(MSDN 文章)。
我几乎可以肯定模型对象会随着时间而改变。我能做些什么来保持序列化/反序列化DataContractSerializer
至少不会失败,而且还能防止往返操作中的信息丢失?感谢您的任何建议!