Отдых WCF: лучший способ для [Serializable] StudentDTO: IEnumerator, IEnumerable от сервера к клиенту - PullRequest
0 голосов
/ 06 ноября 2019

Я работаю над сервисами 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

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...