1

私はからクラスを生成しており、クラスを設定して xml にシリアル化するXSD必要があります。

生成されたクラスに入るすべての情報を含むさまざまなクラスがあります。

問題は、生成されたクラスにはバージョンがあり、それらのクラスのプロパティは同じバージョンの他のクラスであることです。

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; }
}

MyClassV1とのデータV2は基本的に同じなので、同じコードを使用できます。

LocalDataクラスとバージョン管理されたクラスのいずれかを取得し、バージョン管理されたクラスにデータを入力するファクトリを作成したかったのですが、作成する必要があるバージョンをファクトリが認識していないproperty = new MyClassVxため、実行したいときに問題が発生しました。 .

私はそれをできた

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

などですが、それは大量のコードです。

これは、外部企業によって指定された xml メッセージを生成するためのもので、さまざまなバージョンがあり、コンテンツを内部システムにシリアライズおよびデシリアライズできる必要があります。

4

2 に答える 2

0

この特定の問題に対する解決策が見つからず、AutoMapper を使用することを選択しました。これは、別の方法で問題を解決するようです。

生成されたクラスを取得し、アセンブリによって AutoMapper に必要なマッピング クラスを作成するツールを作成しました。生成された大規模なクラスがある場合は、これも行うことができます。クラスのマッピングに必要な数千行のコードを作成できるようになりました。「オブジェクト」のタイプを特定のクラスにマッピングするときに発生した問題を解決します。参考になるかわかりませんが、あります。

于 2013-08-20T08:03:04.833 に答える