2013-06-28 22 views
1

我从XSD生成类,需要填充类到序列化为xml在工厂处理不同版本的类

我有不同的类,包含进入生成类的所有信息。

问题是生成的类有版本,这些类中的属性是同一版本中的其他类。

class LocalData 
{ 
    public MyClass property { get; set; } 
} 

class XmlVersion1 
{ 
    public MyClassV1 property { get; set; } 
} 

class XmlVersion2 
{ 
    public MyClassV2 property { get; set; } 
    public MyClassXV2 newProperty { get; set; } 
} 

MyClassV1V2数据基本上是相同的,因此可以使用相同的代码。

我想作一个工厂,只是采取了LocalData类和任何版本的类和填充数据的版本类,但我碰到的时候我想做property = new MyClassVx一个问题,因为工厂不知道它应该创建哪个版本

我能做

if (parameter is MyClassV1) 
    paramter.MyClassV1 = new MyClassV1 

等等,但就是代码了很多。

这是为了生成由外部公司指定的xml消息,它们有不同的版本,我们必须能够将内容序列化并反序列化到我们的内部系统中。

回答

0

我们还没有找到解决这个特定问题的方法,并选择使用AutoMapper,它似乎以不同的方式解决了我们的问题。

我们制作了一个工具,它接收生成的类并通过汇编创建AutoMapper所需的映射类。如果你有很大的生成类,你也可以这样做。现在我们可以创建数千行映射类所需的代码。它解决了将'object'类型映射到特定类时遇到的问题。我不知道这是否有帮助,但它是有用的。

0

想法很简单。工厂不会关心版本。但新客户将永远支持旧版本的功能。如果0.5版本有一个方法来接收订单列表(例如这是一个购物应用程序),0.6版本也应该有相同的方法。我们有相同的结构,我们正在这样做。