Я работаю над сервисами WCF Rest, которые вызывают существующий код, который возвращает [Serializable] DTO объекты . Существующий код находится в производстве, и я не могу их изменить. Мы просто заменяем коммуникационный уровень сервисами WCF Rest. На стороне сервера я пытаюсь сериализовать возвращаемый объект с помощью библиотеки Newtonsoft JSON.NET в строку и отправить его клиенту, а на стороне клиента десериализовать его обратно в объект.
У меня проблема с классом ниже
[Serializable]
public class StudentDTO : IEnumerator, IEnumerable
{
public string FirstName {get;set;}
public IComparer<ClassDTO> SortComparer {get;set;}
}
[Serializable]
public class ClassDTO
{
public string HeadTeacher {get;set;}
public int StudentsCount {get;set;}
}
Когда я пытаюсь сериализоваться, как показано ниже, я получаю []
StudentDTO returnObject = GetStudents();
string stringfyReturnObject = Newtonsoft.Json.JsonConvert.SerializeObject(returnObject)
stringfyReturnObject []
Итак, чтобы решить эту проблемуЯ сделал ниже
[DataContract]
public class ClassDataContract
{
[DataMember]
public string HeadTeacher {get;set;}
[DataMember]
public int StudentsCount {get;set;}
}
[DataContract]
public class StudentDataContract
{
[DataMember]
public string FirstName {get;set;}
[DataMember]
public IComparer<ClassDataContract> SortComparer {ge;set;}
}
У меня есть методы для преобразования DTO в DataContract, как показано ниже
public ClassDataContract ConvertToClassDataContract(ClassDTO dto)
{
ClassDataContract dc = new ClassDataContract();
dc.HeadTeacher = dto.HeadTeacher;
dc.StudentsCount = dto.StudentsCount;
return dc;
}
public StudentDataContract ConvertToStudentDataContract(StudentDTO dto)
{
StudentDataContract dc = new StudentDataContract();
dc.FirstName = dto.FirstName;
// I want to know how to assign DTO SortComparer to DataContract SortComparer
return dc;
}
Я хочу знать, как назначить DTO SortComparer для DataContract SortComparer. Возможно ли это?
Если это невозможно, то как лучше передать поток с сервера на клиент?
[Serializable]
public class StudentDTO : IEnumerator, IEnumerable
Мой отличается от этого, так как я не могу изменить класс StudentDTO, Сериализация на классах, которые реализуют IEnumerator
Заранее спасибо