gpt4 book ai didi

c# - UWP 中 CollectionDataContract 的 DataContractSerialzer 错误

转载 作者:行者123 更新时间:2023-11-30 21:50:53 25 4
gpt4 key购买 nike

我正在将现有库移植到 Windows 10 通用 Windows 平台,但在序列化标有 CollectionDataContract 属性的类型时遇到问题。这些类使用 CollectionDataContract 的 KeyName 和 ValueName 属性在序列化期间提供自定义名称。在 Debug模式下一切正常,但在启用 .NET Native Tool Chain 时失败。

例如:

[CollectionDataContract(Name = "OriginalValuesMap",
ItemName = "OriginalValues", KeyName = "Name", ValueName = "OriginalValue")]
internal class OriginalValuesMap : Dictionary<string, Object> { ... }

正确序列化后看起来像这样:

<OriginalValuesMap>
<OriginalValues>
<Name>Company</Name>
<OriginalValue i:type="d:string">Facebook</OriginalValue>
</OriginalValues>
</OriginalValuesMap>

然而在失败的情况下看起来像这样:

<OriginalValuesMap>   
<OriginalValues>
<b:Key>Company</b:Key>
<b:Value i:type="d:string">Facebook</b:Value>
</OriginalValues>
</OriginalValuesMap>

有没有办法通过运行时指令来解决这个问题?

编辑1:我认为使用 Vanilla CollectionDataContract 的一种解决方法也不起作用。在 .NET Native UWP 端序列化的名称与 .NET WCF 应用期望反序列化的名称不匹配。

编辑2:一种可行的解决方法是删除对该属性的使用。我们确实需要定制的契约(Contract)名称,所以这并不理想。

最佳答案

此问题已在最新版本中修复。要获得修复,请从您的 UWP 项目添加对 System.Runtime.Serialization.Xml (4.0.11) 包的显式引用。然后重建项目,它应该可以工作。

关于c# - UWP 中 CollectionDataContract 的 DataContractSerialzer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048821/

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