【发布时间】:2021-06-07 01:49:57
【问题描述】:
我在将 XML 字符串反序列化为 C# 对象时遇到问题。问题是我的结果将永远为空。这是我存储在字符串变量中的 XML 字符串。
<objects>
<object>
<dateadded>1614924419</dateadded>
<id>CF7E7B22-1D3A-4CFE-91F9-F8C5C2DB4069</id>
<name>NorthernLights</name>
<parentid>ED98C97F-A202-48ED-AEEA-34362508A30B</parentid>
<type>file</type>
</object>
<object>
<dateadded>1614924419</dateadded>
<id>CF7E7B22-1D3A-4CFE-91F9-F8C5C2DB4070</id>
<name>Northern</name>
<parentid>ED98C97F-A202-48ED-AEEA-34362508A30C</parentid>
<type>file</type>
</object>
</objects>
这些是我创建的代表 XML 文档的类。 我想那里有问题。有人可以帮我解决这个问题吗?
这是objects标签的类:
namespace DataContractSample.DataContract.Model
{
using System.Collections.Generic;
using System.Runtime.Serialization;
[DataContract(Name = "objects", Namespace = "", IsReference = false)]
[KnownType(typeof(IList<Image>))]
public class Images
{
[DataMember(Name = "object", EmitDefaultValue = false, IsRequired = true)]
public IList<Image> ImageList;
}
}
这是object标签的类:
namespace DataContractSample.DataContract.Model
{
using System;
using System.Runtime.Serialization;
[DataContract(Name = "object", Namespace = "")]
public class Image
{
[DataMember(Name = "Id")]
public Guid id { get; set; }
[DataMember(Name="parentid")]
public Guid ParentId { get; set; }
[DataMember(Name="name")]
public string Name { get; set; }
[DataMember(Name = "type")]
public string Type { get; set; }
[DataMember(Name = "dateadded")]
public string DateAdded { get; set; }
}
}
谢谢!
【问题讨论】:
-
你能和我们分享一下你如何调用反序列化方法吗?
-
var dataContractSerializerUtility = new DataContractSerializerUtility(); var sortabledataContractSerializer = new DataContractSortableSerializerUtility(dataContractSerializerUtility);图片 imageList = sortabledataContractSerializer.DeSerializer
(XMLString); -
您是否尝试过使用
List<Image>而不是IList<Image>?KnownTypes属性对我来说也很奇怪。它应该在继承的情况下使用,但这里我们没有。 -
是的,我尝试同时使用 List
和 IList 并且结果是一样的。我尝试按照您的建议删除 KnowTypes 属性,但它也不适用于该更改。 -
在下面的帖子中,我详细介绍了这个问题并展示了两种可能的解决方案。它们都不依赖于
KnownTypes属性。
标签: c# .net wcf deserialization