gpt4 book ai didi

c# - RuntimeType :http://schemas. datacontract.org/2004/07/System' 不是预期的

转载 作者:太空狗 更新时间:2023-10-29 20:22:39 30 4
gpt4 key购买 nike

好的,我让 DataContractSerializer 与我的对象图一起工作。有关详细信息,请参阅我之前的问题。

Serialization / Derialization of a tree structure

The deserializer has no knowlege of any type that maps to this contract

但是,我的字段之一 _UserPropertyDefinitions 的定义如下所示。它定义了该用户可以添加到数据结构中的对象的自定义属性列表。字符串是标识属性的唯一键,类型是属性的类型,它始终是原始类型,如 Bool、Int、String 等。

每个对象都有一个相应的Dictionary(String key, Object value)集合来存储它为任何“用户属性”设置的值

[DataMember]
private Dictionary<string, Type> _UserPropertyDefinitions;

当此属性为空集合时,我的对象图序列化良好,但是一旦我向此集合添加自定义属性,我在尝试使用 DataContractSerializer 进行序列化时出现以下异常。

Type 'System.RuntimeType' with data contract name 'RuntimeType:http://schemas.datacontract.org/2004/07/System' is not expected. Add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.

如果我删除该字段的 DataMember 属性,我可以序列化/反序列化而不会出现异常,但当然我会丢失我在该字段中创建的设置。

最佳答案

我很确定 Type不会很好地序列化 - 并且可以说它无论如何都不属于数据契约(Contract),因为(特定于实现)它违背了数据契约(Contract)的主要目标之一......

但是,我希望最好的方法是将其换成 Dictionary<string,string> , 使用 TypeAssemblyQualifiedNameFullName .

关于c# - RuntimeType :http://schemas. datacontract.org/2004/07/System' 不是预期的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/739052/

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