序列化有状态+无状态对象的引用

时间:2014-06-18 01:49:16

标签: c# .net xml serialization factory

这是一个设计问题:

class Suite
{
  List<Plugins> Plugins {get;set;} 
}

class DataCollector : Plugin
{
  string Property1 {get;set;}
  string Property2 {get;set;}

  public void PrintMyName();    
}

class Measurement: Plugin
{
  string Property1 {get;set;}
  string Property2 {get;set;}

  public void PrintMyName();    
}

现在,我希望类套件可以序列化。这里的问题是:

  1. XMl序列化基本上用于序列化DTO类型的对象,因此您基本上序列化/反序列化您的有状态属性,这很好

  2. 这个要序列化的特殊类包含Type Plugin(包含属性值的组合,包含一些属性值)+ functionists。

  3. 这意味着我需要使用工厂来获取插件的实际实例,使其具有属性值的所有功能。

  4. 我在查看XMLSrializable + Factory组合吗?是否有任何优雅的方式来实现这一目标?

1 个答案:

答案 0 :(得分:1)

为什么不实现IDeserializationCallback接口,因此在反序列化时,您可以通过致电工厂将您的对象恢复生机。

我不太了解你的课程的目的,但我会尽我所能给出一个例子:

public class MyDataClass : IDeserializationCallback
{

   public int SimpleKeyProperty { get; set; }
   public string TextProperty{ get; set; }

   public void OnDeserialization(object sender)
   {
      //upon deserialization use the int key to get the latest value from
      //factory (this is make believe...)
      TextProperty = SomeFactory.GetCurrentValue( this.SimpleKeyProperty) ;
   }
}