2017-09-25 9 views
-1

私のアプリケーションでは、最近購入したSDKを使用しています。私はクラスをシリアライズ可能とマークしていますが、シリアル化したいときにエラーが発生します:SDKのライブラリ内のクラスをC#でシリアライズ可能にマークする

タイプ 'FLib.FClass' in Assembly 'IOp.FLib、Version = 1.7.0.0、Culture = neutral、PublicKeyTocken = nul 'はシリアル化可能とマークされていません。

FClassをシリアル化可能として強制的にマークできますか?

+0

クラス内にオブジェクト作成エラーがあるクラスを作成します。次に、クラスをIserializableにします。 msdn:https://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable(v=vs.110).aspxを参照してください。 – jdweng

答えて

0

私が見つけた最良の方法は、オブジェクトのイベントの割り当てを解除してからシリアル化してから再割り当てし、デシリアライズの直後にイベントを割り当てることです。このようなもの:

 MemoryStream stream; 
     . 
     . 
     . 

     // Serialize 
     obj.Event1 -= Obj_Event1; 
     obj.Event2 -= Obj_Event2; 
     ... 
     IFormatter formatter = new BinaryFormatter(); 
     formatter.Serialize(stream, obj); 
     obj.Event1 += Obj_Event1; 
     obj.Event2 += Obj_Event2; 
     ... 

     . 
     . 
     . 

     // Deserialize 
     IFormatter formatter = new BinaryFormatter(); 
     stream.Seek(0, SeekOrigin.Begin); 
     obj = formatter.Deserialize(stream); 
     obj.Event1 += Obj_Event1; 
     obj.Event2 += Obj_Event2; 
     ... 
関連する問題