-1

ライブラリコードから派生したいくつかのオブジェクトをシリアル化しようとしていますが、ライブラリに触れずにこれを達成する方法を見つけようとしています (これは私が管理していません)。

これは、オブジェクトが置き換えられた基本的なシナリオです。バスケットとフルーツはどちらもライブラリ クラスであり、すべてのバスケットにはフルーツの配列があります。

class MyBasket : Basket
{
    public MyBasket () : base () { ... }
}

class Apple : Fruit
{
    public Apple () : base () { ... }
}

MyBasket はそれ自体で正常にシリアル化されますが、Apple を追加してシリアル化しようとすると、次のエラーが発生します。

There was an error generating the XML document.
The type Fruit[] may not be used in this context.

また、Fruit クラスで XMLInclude を使用するように指示するエラーが時々表示されますが、これは実行できません。

4

1 に答える 1

1

ライブラリに触れることができず、ライブラリ クラスがシリアル化のために適切に設定されていない場合、現在の制限の下で目的を達成することはできないと思います。次のいずれかが必要です。

  1. ライブラリ クラスを変更する
  2. ライブラリのクラスをミラーリングする独自のクラスを作成しますが、シリアル化を適切に実装します (その後、ライブラリ クラスから独自のクラスにコピーしてシリアル化します)。
于 2012-12-13T20:50:52.433 に答える