我有一个WCF服务和Web客户端。 Web服务实现一种方法SubmitOrders。 此方法采用订单集合。问题是服务必须返回一个数组 每个订单的结果 - 真或假。将WCF参数标记为out或ref不会 感。你会推荐什么?
[ServiceContact]
public bool SubmitOrders(OrdersInfo)
[DataContract]
public class OrdersInfo
{
Order[] Orders;
}
答案 0 :(得分:11)
将WCF参数标记为out或ref毫无意义。
out参数在WCF中有意义。
你会推荐什么?
我建议使用参数。
注1:它会将您的out参数移动为您的第一个参数。
注意2:是的,您可以在WCF中返回具有复杂类型的对象。使用[DataContract]属性和属性为[DataMember]的属性标记您的类。
答案 1 :(得分:3)
使用复杂类型(具有DataContract属性的另一个类)作为回报。
喜欢
[ServiceContact]
public OrdersResult SubmitOrders(OrdersInfo)
[DataContract]
public class OrdersInfo
{
Order[] Orders;
}
[DataContract]
public class OrdersResult
{
.....
}
同时在DataMember
Order[] Orders;
答案 2 :(得分:2)
好吧,如果你想避免out和ref参数,你总是可以返回成功提交的订单ID的数组。
答案 3 :(得分:2)
是的,在WCF操作上返回 out参数是有意义的。响应时,SOAP消息将包含传回的元素。
MSDN上有关于数据传输的好内容:Specifying Data Transfer in Service Contracts
此外,您需要在SubmitOrders上使用 OperationContractAttribute (而不是ServiceContractAttribute)。
答案 4 :(得分:1)
保存顺序和真/假或特殊数组的特殊类。
答案 5 :(得分:1)
该方法如下:
public OrdersInfo SubmitOrders(OrderInfo orders){
}
其中OrderInfo中的每个项目都有一个SubmissionStatusInfo,如:
class SubmissionStatusInfo{
enum Status { get; set; }
string Message { get; set; }
}
其中Status : Submitted, Failed, Error
等
Message
:一个字符串,提供有关状态的其他信息......
HTH