这是一个设计问题:
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();
}
现在,我希望类套件可以序列化。这里的问题是:
XMl序列化基本上用于序列化DTO类型的对象,因此您基本上序列化/反序列化您的有状态属性,这很好
这个要序列化的特殊类包含Type Plugin(包含属性值的组合,包含一些属性值)+ functionists。
这意味着我需要使用工厂来获取插件的实际实例,使其具有属性值的所有功能。
我在查看XMLSrializable + Factory组合吗?是否有任何优雅的方式来实现这一目标?
答案 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) ;
}
}