3

ユーザーコントロールでプロパティをシリアル化する方法は?

次のコードを試してみましたが、XmlSerializer オブジェクトの作成中に InvalidOperationExceptionio が発生しました

MyUserControl userControl = new MyUserControl();
XmlSerializer serializer = new XmlSerializer(typeof(MyUserControl));
Stream stream = new MemoryStream();
TextWriter writer = new StreamWriter(stream);
serializer.Serialize(writer, userControl);   

例外:

System.InvalidOperationException が処理されませんでした

HResult=-2146233079

Message=タイプ 'Demo.MyUserControl' を反映するエラーが発生しました。

4

1 に答える 1

1

この私見のようにすべきではありません。

シリアル化するデータを保持する別の「データ転送オブジェクト (DTO)」スタイル クラスを記述し、代わりにそれを使用する必要あります。(もちろん、データを前後に変換するには、Transform メソッドを記述する必要があります。)

そうしないと、データ ストレージ フォーマットがユーザー コントロールに密接に結合されます。

シリアル化に別のクラスを使用すると、特に将来新しいプロパティを追加する必要がある場合に、はるかに管理しやすく柔軟になります。

ユーザー コントロールを本当にシリアル化する必要がある場合 (そうしないことを強くお勧めします) 、「オプトアウト」メカニズムではなく、プロパティがシリアル化される「オプトイン」メカニズムを持つDataContract シリアル化を使用してみてください。古い連載。

于 2013-04-09T09:28:16.917 に答える