2012-04-19 6 views
0

私は基底クラスStandardMeasurementと派生クラスCustomMeasurementを持っています。両方とも直列化することができます。ファイルからXMLシリアル化の子クラスをベースクラスに変換しますか?

  1. ロードCustomMeasurementcustomMeasInstanceに:ここで

    は、私が何をしたいです。

  2. 新しい標準を作成します。 meas。 s。.: StandardMeasurement stdMeas = (StandardMeasurement)customMeasInstance
  3. StandardMeasurementタイプとしてstdMeas(のみ)をシリアル化します。

stdMeasはまだXMLシリアライザによってCustomMeasurementとみなされているので、試行中にエラーが発生します。私はこれを行う方法があるのですか、または手動ですべての情報を「コピー」する必要がありますか?

ありがとうございます!

+0

'私はこれで何ERROR'を取得するとの互換性のためにobject initializerを削除しましたエラー? –

答えて

1

System.Xml.Serialization.XmlSerializerクラスを使用して、あなたはこのような何かを行うことができるはず:

EDIT - .NET 2.0

var cust = new CustomMeasurement(); 

cust.SomeProperty = "Foo"; 
cust.AnotherProperty = "Bar"; 

var serializer = new XmlSerializer(typeof(StandardMeasurement), new Type[] { cust.GetType() }); 
serializer.Serialize(Console.Out, cust); 
+0

さて、私は.NET 2.0を使っていますので、試してみることはできません:\しかし、 'StandardMeasurement'クラスに' XmlInclude(typeof(CustomMeasurement)) '属性を追加しようとしました。これで、シリアル化されますが、私が望まない子プロパティが含まれています。思考? – john

+0

'XmlSerializer'クラスは.NET 2.0でも利用できます。 'object initializer'は3.5にまで戻りませんでしたが、オブジェクトを初期化してプロパティを従来の方法で設定することができます。 –

関連する問題