I have a WCF service and web client. Web service implements one method SubmitOrders. This method takes a collection of orders. The problem is that service must return an array of results for each order - true or false. Marking WCF paramters as out or ref makes no sense. What would you recommend?
[ServiceContact]
public bool SubmitOrders(OrdersInfo)
[DataContract]
public class OrdersInfo
{
Order[] Orders;
}
Special class that holds the order and the true/false, or an array of tupels.
Yes, it makes sense returning an out parameter on WCF operations. On response, the SOAP message will contain the element passed back.
There are good content on MSDN about data transfer: Specifying Data Transfer in Service Contracts
Also, you need to use the OperationContractAttribute (not ServiceContractAttribute) on the SubmitOrders.
Well, if you want to avoid out and ref parameters, you could always return an array of the IDs of the orders that were successfully submitted.
Use complex type(another class with DataContract attribute) in return.
Like
Also add
DataMember
onOrder[] Orders;
The method would look like:
where each item in the OrderInfo will have a SubmissionStatusInfo like:
where
Status : Submitted, Failed, Error
etc.Message
: a string giving some additional information about the status...HTH
out parameters do make sense in WCF.
I recommend to use out parameters.
Note 1: It will move your out parameter to be the first parameter on you.
Note 2: Yes you can return objects with complex types in WCF. Tag your class with an attribute of [DataContract] and your properties with an attribute of [DataMember].