我有一个WCF REST服务,由另一个应用程序/服务(我无法控制)调用。此其他服务期望从我的服务调用单个服务方法,并可能返回单个JSON对象或所述对象的数组。我没有遇到服务返回其中任何一个的问题,但无法弄清楚如何(或者是否可能)从同一服务方法返回对象或对象数组。以下是代码示例:
返回单个JSON对象:
[DataContract]
public class Item
{
[DataMember]
public string ItemId { get; set; }
[DataMember]
public int number { get; set; }
}
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "items")]
public Item GetItems(RequestObject requestItems)
{
Item newItem = SqlDataAccess.GetStandaloneItem(requestItems);
return newItem;
//Return format is:
//{"ItemId" :"ABCDEFG","number" :90}
}
返回对象数组:
[DataContract]
public class ItemList
{
[DataMember]
public List<Item> items { get; set; }
}
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "items")]
public ItemList GetItems(RequestObject requestItems)
{
ItemList newItemList = SqlDataAccess.GetItems(requestItems);
return newItemList;
//Return format is:
//{"items": [
// {"ItemId" :"ABCDEFG","number" :30},
// {"ItemId" :"HIJKLMN","number" :49},...]
//}
}
这个想法是将这两个结合起来,以便可以返回任何类型(Item或ItemList)。理想情况下,调用它的app / service将能够处理只有一个对象的数组,他们已经同意支持这些对象,但是在我们需要上线之前不会进行更改。
我还没有找到一种方法来做到这一点 - 唯一看起来可能有用的是ServiceKnownTypeAttribute ......我是否在正确的轨道上?
我感谢任何帮助/建议。