gpt4 book ai didi

c# DataContractSerializer 问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:49 26 4
gpt4 key购买 nike

我正在从以 XML 形式返回 XML 的 restful 服务中提取数据

<CollectionOfItems>
<Item>
<Param1>param1 value</Param1>
<Param2>param2 value</Param2>
</Item>
<Item>
<Param1>param1 value</Param1>
<Param2>param2 value</Param2>
</Item>
</CollectionOfItems>

这是我用来消费其余服务的方法

public object getMetaData(string uri, Type type)
{
//Create Object To Be Returned
object result = null;
//Create Web Request
HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
//Get Response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
if (request.HaveResponse && response != null)
{
using (Stream reader = response.GetResponseStream())
{
DataContractSerializer xmlSer = new DataContractSerializer(type);

result = xmlSer.ReadObject(reader);
}
}
}
return result;
}

我有一个匹配 <CollectionOfItems> 的类

[CollectionDataContract(Name = "CollectionOfItems", Namespace = "http://matchingnamespace")]
public class CollectionOfItems: List<Item>
{
}

还有一个类来保存 <Item>

[DataContract(Name="Item")]
public class Item
{
[DataMember(Name="Param1")]
public string param1{ get; set; }

[DataMember(Name="Param2")]
public string param2{ get; set; }
}

我的问题是,当我将结果绑定(bind)到列表框时,我最终得到一个具有正确数量结果的对象,但我只看到结果为空行。我好像有一个<CollectionOfItems>使用正确数量的 <Item>但我没有看到 param1 或 param2 等的任何值......

最佳答案

一位 friend 刚刚为我解决了这个问题。这是任何有类似问题的人的答案。如果 namespace 存在于集合数据契约(Contract)中,则还必须在项目数据契约(Contract)中声明它。即.E

[DataContract(Name="Item", Namespace = "http://matchingnamespace")] 
public class Item
{
[DataMember(Name="Param1")]
public string param1{ get; set; }

[DataMember(Name="Param2")]
public string param2{ get; set; }
}

关于c# DataContractSerializer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852986/

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