Page 1 of 1

Very serious serializing problem !

Posted: Tue Jun 27, 2006 11:53 am
by 9638762
I have custom classes that inherited from Steema classes ..
And also some of my classes has instance of Steema's classes and all of my classes integrated with Steema's ..

Code: Select all

Class RChart:TChart
{
    List<RFunction> listRF;
    List<RAxis> listRA; 
}
class RFunction
{
      Chart c;
}
class RAxis:Axis
class RCustomPoint
{
    CustomPoint CP;
}
What must i do for clear serialization , I will use serialization for Saving and Loading data...
Should i implement Steema.TeeChart.Export.TemplateExport.ICustomSerialization to my classes ?
Should i imitate DeserializeFrom and SerializeObject method ..

Thx for advice ...

Posted: Thu Jun 29, 2006 1:58 pm
by narcis
Hi glikoz,

This is how your classes should look like:

Code: Select all

public class MyChart : TChart
{
  public MyChart()
  {
    Text = "MyChart";
  }
}

public class MyLine : Line, Steema.TeeChart.Export.TemplateExport.ICustomSerialization
{
  public MyLine(Chart c) : base(c)
  {
    myBooleanProperty = true;
  }

  public MyLine() : this((Chart)null) { }

  public override string Description
  {
    get { return "My vastly superior line"; }
  }

  private bool myBooleanProperty;

  [DefaultValue(true)]
  public bool MyBooleanPropery
  {
    get { return myBooleanProperty; }
    set { myBooleanProperty = value; }
  }


  #region ICustomSerialization Members

  public void Serialize(System.Runtime.Serialization.SerializationInfo info)
  {
    info.AddValue("MyBooleanPropery", MyBooleanPropery);
  }

  public void DeSerialize(System.Runtime.Serialization.SerializationInfo info)
  {
    MyBooleanPropery = info.GetBoolean("MyBooleanPropery");
  }

  #endregion
}
And this is how they should be used in a form:

Code: Select all

public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
    InitializeChart();
  }


  private void InitializeChart()
  {
    MyLine myline = new MyLine(myChart1.Chart);
    myline.FillSampleValues();
    myline.MyBooleanPropery = false;
  }

  private void button1_Click(object sender, EventArgs e)
  {
    MemoryStream ms = new MemoryStream();
    myChart1.Export.Template.Save(ms);
    ms.Position = 0;
    myChart2.Import.Template.Load(ms);
    MyLine line = myChart2.Series[0] as MyLine;
    MessageBox.Show(line.MyBooleanPropery.ToString());
  }
}