项目中用到序列化数据存储的技术:

[System.Serializable]
internal class Class1
{
    ....
    byte[] m_Data;
    internal byte[] Data
    {
        get
        {
            return m_Data;
        }
        set
        {
            m_Data=(byte[])value.Clone();
            IsChanged=true;
        }
    }
    internal event System.EventHandler DataChanged;
    private bool IsChanged
    {
        set
        {
            if(value&&DataChanged!=null)
                DataChanged(this,new System.EventArgs());
        }
    }
}

[System.Serializable]
internal class Class2
{
    ...
  private Class1 m_class1;
  internal Class1 class1
  {
   get
   {
    if(this.m_class1==null)
    {
     this.m_class1=new Class1();
     this.m_class1.DataChanged+=new EventHandler(this.DataIsChanged);
    }
    return this.m_class1;
   }
  }

  private void DataIsChanged(object sender,System.EventArgs e)
  {
     this.IsChanged=true;
  }
    ...
}


在应用中,要对Class2的对象进行序列化和反序列化操作,结果,序列化正确,反序列化失败,报告“不能反序列化非公共的代理”,经过测试,把事件代理:
  private void DataIsChanged(object sender,System.EventArgs e)
  {
     this.IsChanged=true;
  }
的访问属性修改为:
  public void DataIsChanged(object sender,System.EventArgs e)
  {
     this.IsChanged=true;
  }
后,问题解决。

相关文章:

  • 2022-12-23
  • 2021-08-31
  • 2021-12-12
  • 2021-08-04
  • 2021-05-21
  • 2021-05-24
  • 2022-02-13
  • 2021-06-11
猜你喜欢
  • 2021-07-16
  • 2021-07-02
  • 2021-06-01
  • 2022-03-06
  • 2022-02-20
相关资源
相似解决方案