-1

私のプログラムでは、メインウィンドウであるものを除いて、すべてのクラスがシングルトンパターンを使用しています。そのため、すべてのシングルトン接続は1つのシングルトンクラス「Manager」によって維持されます。このクラスのパブリックメソッドを介した他のクラスのGUIアクセスメソッド。

現在、作業を保存(シリアル化)しようとしていますが、常に「Form1がシリアル化されていません」というエラーが発生します。それがGUIクラスです。それで、それが良い考えではないことを知って、私はそれをシリアル化されたものとしてマークしました。現在、「System.windows.formsはシリアル化されていません」と表示されています。どうしてこれなの?シングルトンアクセスでクラスをシリアル化することはできませんか?助けてください。

注:私は「HeadFirstC#」を学習しているJava開発者です。これは、私自身の好みの方法で彼らの「ラボ」問題の1つを作成する私の最初の試みです。

4

1 に答える 1

1

コードを見ずに、何が悪いのかを知るのは難しいです。主にフォームをシリアル化できます( DataContractSerializerを使用するMSDNのサンプルTest<T>(T obj)メソッドを使用してシリアル化しただけです)。

そうは言っても...フォームの状態を保存するためにフォーム自体をシリアル化するのは賢明ではありません。代わりに、データを別のクラス(一般にModelクラスと呼ばれます。MVCを参照)に保持し、代わりにデータをシリアル化する必要があります。データバインディングまたはMVCパターンを使用して、フォーム(ビュー)をデータ(モデル)に接続します。

これがWinFormsの場合(私が推測しているように)、WinFormsでMVCを使用できます

https://stackoverflow.com/questions/2406/looking-for-a-mvc-sample-for-winforms

WinFormsを使用したデータバインディングについては、を参照してください。

http://msdn.microsoft.com/en-us/library/ef2xyb33.aspx

于 2012-06-27T17:05:10.633 に答える