如题,原本是用XML序列化的。但是进行压力测试的时候发觉速度实在不行,不得已改用二进制序列化。但是由于实体类的父类使用的是第三方的ORM对象,所以无法把它标记为[Serializable]。那么在这种情况下,子类进行二进制序列化的话就会报错。请问有没有高手能够在不修改父类的情况下,让子类二进制序列化?谢谢!!在JAVA下似乎可以让子类来实现父类字段的序列化来达到目的,不知道.NET下面要怎么做。

解决方案 »

  1.   

    将子类标上[Serializable],实现ISerializable接口,也就是添加构造函数
    protected ClassName(SerializationInfo info,StreamContext context)和public virtual void GetObjectData(SerializationInfo info,StreamContext context)方法
    例:
    [Serializable]
    public class MyObject : ISerializable 
    {
      public int n1;
      public int n2;
      public String str;  public MyObject()
      {
      }  protected MyObject(SerializationInfo info, StreamingContext context)
      {
        n1 = info.GetInt32("i");
        n2 = info.GetInt32("j");
        str = info.GetString("k");
      }  public virtual void GetObjectData(SerializationInfo info, 
    StreamingContext context)
      {
        info.AddValue("i", n1);
        info.AddValue("j", n2);
        info.AddValue("k", str);
      }
    }