C# 如何序列化列表<;对象>;使用DataContractSerializer

C# 如何序列化列表<;对象>;使用DataContractSerializer,c#,serialization,datacontract,known-types,C#,Serialization,Datacontract,Known Types,服务器和客户端之间共享的库包含接口: [ServiceContract(SessionMode=SessionMode.Required, CallbackContract=typeof(IClient))] public interface IServer { // Node interface methods [OperationContract(Name = "UploadResults", IsOneWay = true)] void UploadResult

服务器和客户端之间共享的库包含接口:

[ServiceContract(SessionMode=SessionMode.Required, CallbackContract=typeof(IClient))]
public interface IServer
{

     // Node interface methods
    [OperationContract(Name = "UploadResults", IsOneWay = true)]
    void UploadResults(string result);
}
public void UploadResults(string result)
{
  try
  {
    // Get portfolio from stream
    DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));
    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(result)))
    {
      MyClass class = (MyClass)serializer.ReadObject(ms);

      .....   
    }
  }
  catch (Exception ex)
  {
  }
}
实现接口的服务器代码:

[ServiceContract(SessionMode=SessionMode.Required, CallbackContract=typeof(IClient))]
public interface IServer
{

     // Node interface methods
    [OperationContract(Name = "UploadResults", IsOneWay = true)]
    void UploadResults(string result);
}
public void UploadResults(string result)
{
  try
  {
    // Get portfolio from stream
    DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));
    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(result)))
    {
      MyClass class = (MyClass)serializer.ReadObject(ms);

      .....   
    }
  }
  catch (Exception ex)
  {
  }
}
客户端代码调用服务器:

 // Send myclass object to server
  try
  {
    // Write portfolio to stream
    DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));
    using (var stream = new MemoryStream())
    {
      serializer.WriteObject(stream, myclassObj);

      // Send result back to server
      string result = Encoding.UTF8.GetString(stream.GetBuffer(), 0, (int)stream.Position);
      Server.UploadResults(result);
    }
  }
  catch (Exception ex)
  {
  }
MyClass:

  [DataContract]
  [KnownType(typeof(AClass))]
  [KnownType(typeof(List<AClass>))]
  public class MyClass
  {
    [DataMember]
   public List<AClass> History { get; set; }

    [DataMember]
   public int Count { get; set; }
  }

有问题的列表是什么?可能是Ben的重复-我在客户端代码中序列化myclassObj时遇到困难。我在服务器代码中有一个断点-UploadResults。但是当从客户端代码调用时,断点没有命中-Server.UploadResults(result).Ben-如果我要从MyClass中删除List History属性,断点会在ServerMarc中触发-有问题的列表是List History。我正在努力研究如何序列化列表历史