Я создал службу API отдыха WCF с использованием методов службы wcf.My, возвращающих несколько типов данных. Некоторые методы возвращают объект класса или коллекции типа class, bool, int или collection. поэтому я планировал вернуть один и тот же Response во всех методах для этого. Создайте новый класс следующим образом:
[DataContract(Namespace = "")]
public class ServiceResponse
{
[DataMember]
public bool IsError
{ get; set; }
[DataMember]
public string ResponseMessage
{ get; set; }
[DataMember]
public Object ResponseData
{ get; set; }
}
В классе ServiceResponse я объявил свойство типа объекта ResponseData, и мой метод all имеет тип возврата ServiceResponse.see ниже кода:
public ServiceResponse GetUser(int userID)
{
User user = getUser(userID); get user data from database
ServiceResponse response=new ServiceResponse();
var response = new ServiceResponse
{
IsError = false,
ResponseMessage = string.Empty,
ResponseData = user; // Setting Result Data here
};
return response;
}
после вызова службы я могу получить ответ и десериализовать его для объекта класса My return type (ServiceResponse)
var streamReader = new StreamReader(response.GetResponseStream());
var xSerializer = new XmlSerializer(typeof(ServiceResponse ));
var result = (ServiceResponse)xSerializer.Deserialize(streamReader);
XML, который я получаю от сервиса, выглядит так:
<RestResponse>
<IsError>false</IsError>
<ResponseData i:type="ArrayOfBlogEntryDTO">
<BlogEntryDTO>
<Active>0</Active>
<BlogEntryID>36</BlogEntryID>
<UserID>1</UserID>
<UserName>admin</UserName>
<Views>12</Views>
</BlogEntryDTO>
<BlogEntryDTO>
<Active>0</Active>
<BlogEntryID>36</BlogEntryID>
<UserID>1</UserID>
<UserName>admin</UserName>
<Views>12</Views>
</BlogEntryDTO>
</ResponseData>
<ResponseMessage></ResponseMessage>
так как в свойстве ResponseData у меня есть массив объекта класса (Collection of class class), я хочу получить его в коллекции или объекте пользовательского класса.
похож на:
Collection<BlogEntryDTO> blogEntries=(Collection<BlogEntryDTO>) ResponseData;
Как я могу это сделать?