gpt4 book ai didi

c# - 在 WCF 服务中重命名 __type-field

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:45 25 4
gpt4 key购买 nike

我正在尝试将 GeoJSON 映射到 DataContracts,以便在工作中的某些 WCF 服务中使用。GeoJSON 有一个名为“type”的字段,DataContracts 序列化依赖于字段“__type”来支持反/序列化为正确的子类型。我的 DataContracts 都是以 GeoJSON 规范命名的,我已经将 DataContracts 的命名空间设置为“”,所以基本上我已经设法实现了 GeoJSON <==> DataContracts 如果我可以告诉(反)序列化器使用该字段“type”而不是字段“__type”。

是否有可能告诉 WCF 或 DataContract 序列化程序要查看哪个字段以获取类型信息?如何支持 实际上 使用 __type-field 的 JSON 标准?

最佳答案

你不能。 __type 在 DataContractJsonSerializer 的最基本级别进行了硬编码。

您可能拥有的一个选择是将其包装在另一个序列化程序、数据协定解析器或数据协定代理项周围,以将 __type 中的任何内容映射到类型(在序列化时)并将类型中的任何内容传输到 __type(在反序列化)。这是非常令人头疼的额外手动工作。

您的另一个选择是编写您自己的序列化程序。这并不像您想象的那么难,只要您通过 Reflector 查看 DataContractJsonSerializer 的方式,并与您的编写者和读者一起模仿它,并分析 DataContractJsonSerializer 的使用或实例化位置。

您的第三个选择可能是完全使用另一个序列化程序,例如 JSON .NET

第四种选择是使用 MicrosoftAjax.js,它确实理解 __type,然后以某种方式将它与 GeoJSON 结合使用(我不知道这是否可能,但只是把它作为一个潜在的想法扔在那里)

关于c# - 在 WCF 服务中重命名 __type-field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com