gpt4 book ai didi

c# - WebMethod 返回通用列表

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

我有两个简单的类:一个 Order 对象,它包含一个 OrderLine 对象列表:

public class Order  
{
public string OrderNo { get; set; }
public string CustomerName { get; set; }

public List<OrderLine> Lines { get; set; }
}

public class OrderLine
{
public string ItemNo { get; set; }
public int Qty { get; set; }
public decimal Price { get; set; }
}

[WebMethod]
public Order GetOrder(string orderNo)
{
return null;
}

[WebMethod]
public List<Order> GetOrderList(string orderNo)
{
return null;
}

问题是 Orders 中的 OrderLine 对象的详细信息(属性)未由第二个 WebMethod 呈现(它与第一个 WebMethod 一起工作正常):

第一个 WebMethod(返回订单)呈现此 XML(正确地,每个订单行都有 ItemNo、Qty 和 Price):

<GetOrderResult>  
<OrderNo>string</OrderNo>
<CustomerName>string</CustomerName>
<Lines>
<OrderLine>
<ItemNo>string</ItemNo>
<Qty>int</Qty>
<Price>decimal</Price>
</OrderLine>
<OrderLine>
<ItemNo>string</ItemNo>
<Qty>int</Qty>
<Price>decimal</Price>
</OrderLine>
</Lines>
</GetOrderResult>

第二个 WebMethod(返回一个列表)呈现这个 XML(注意 OrderLines 不再呈现细节):

<GetOrderListResult>  
<Order>
<OrderNo>string</OrderNo>
<CustomerName>string</CustomerName>
<Lines>
<OrderLine xsi:nil="true" />
<OrderLine xsi:nil="true" />
</Lines>
</Order>
<Order>
<OrderNo>string</OrderNo>
<CustomerName>string</CustomerName>
<Lines>
<OrderLine xsi:nil="true" />
<OrderLine xsi:nil="true" />
</Lines>
</Order>
</GetOrderListResult>

我怎样才能让 OrderLines 呈现细节而不是 xsi:nil="true"??

谢谢。


感谢您的回复,但这并没有帮助。我发布的代码已尽可能简化;真正的代码当然实例化列表等,但仍然有同样的问题。但我仍然在示例中尝试了您的建议:

public class Order
{
public string OrderNo { get; set; }
public string CustomerName { get; set; }

public List<OrderLine> Lines { get; set; }

public Order()
{
Lines = new List<OrderLine>();
Lines.Add(new OrderLine());
Lines.Add(new OrderLine());
}
}

WebMethod 仍然返回:

<GetOrderListResult>
<Order>
<OrderNo>string</OrderNo>
<CustomerName>string</CustomerName>
<Lines>
<OrderLine xsi:nil="true" />
<OrderLine xsi:nil="true" />
</Lines>
</Order>
<Order>
<OrderNo>string</OrderNo>
<CustomerName>string</CustomerName>
<Lines>
<OrderLine xsi:nil="true" />
<OrderLine xsi:nil="true" />
</Lines>
</Order>
</GetOrderListResult>

最佳答案

您遇到的问题是 List 不是 XMLSerializable(参见 here)。您需要将其转换为数组之类的东西。

您可以只使用数组,也可以继续使用 List,但在返回值时使用 .ToArray() 方法。

参见 this如果你真的想序列化它而不使用数组。

关于c# - WebMethod 返回通用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4093754/

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