У меня есть два простых классов: объект Order, который содержит список объектов OrderLine:WebMethod возвращения родовой список
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;
}
Проблема заключается в том, что детали (свойства) объектов OrderLine в Орденов не оказываемая второй WebMethod (он отлично работает с первым WebMethod):
первый WebMethod (возвращающая Order), делает этот XML (правильно, с ITEMNO, Кол-во & Цена для каждого OrderLine):
<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 (возвращающая List), делает этот 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: ноль = «истина» ??
Спасибо.
Спасибо за ответ, но это не поможет. Код, который я опубликовал, упрощен как можно больше; реальный код, конечно, создает экземпляр списка и т. д., но по-прежнему имеет ту же проблему. Но я все еще пытался ваше предложение в образце:
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>