Я создал службу API отдыха WCF, используя предварительный просмотр 2 стартового комплекта wcf rest, который автоматически возвращает данные JSON или XML в зависимости от запрошенного типа контента. все работает нормально, но так как мои сервисные методы возвращают множественный тип данных, некоторые методы возвращают объект класса или коллекции класса, типа 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; }
}
и класс пользователя следующим образом:
[DataContract(Namespace = "")]
public class User
{
[DataMember]
public string UserName
{ get; set; }
[DataMember]
public int UserID
{ get; set; }
}
В классе ServiceResponse я объявил свойство типа объекта ResponseData, и мой метод all имеет тип возврата ServiceResponse. Моя проблема в том, что когда я задаю любую строку, тип bool, int как ResponseData, она сериализуется, но когда я устанавливаю тип коллекции или объект другого класса, который также имеет атрибут DataContarct, этот класс не сериализуется, см. Код ниже:
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;
}
когда я вызывал вышеуказанный метод (GetUser), я получил нулевой ответ из-за проблемы с сериализацией, но следующий код работает нормально
public ServiceResponse TestMethod(string testMessage)
{
ServiceResponse response=new ServiceResponse();
var response = new ServiceResponse
{
IsError = false,
ResponseMessage = string.Empty,
ResponseData = testMessage; // Setting Result Data here
};
return response;
}
Кто-нибудь может мне помочь?