2009-05-28 3 views
2

後に初期化されていない私は、インライン初期化されている私のクラスで[Nonserialized]フィールドがあります。私が実行しているオブジェクトをデシリアライズした後、しかしC#は[NonSerialized]インライン初期化とフィールドは、デシリアライゼーション

[NonSerialized] 
private bool running = true; 

を==偽です。これは私が望むものではありません。すべての[NonSerialized]フィールドでインラインイニシャライズを動作させることはできますか?それ以外の場合は、ISerializableを実装する必要があります。

+0

これは、デシリアライズ処理で、コンストラクタを呼び出さずに、タイプの新しい初期化されていないオブジェクトが作成されるためです。 – sisve

答えて

3

デフォルトコンストラクタで設定できます。

は、それはあなたがそこにあなたの余分な初期化を実行できるように、オブジェクトが直列化復元されaftherと呼ばれるSystem.Runtime.Serialization.IDeserializationCallback

を実装します。

+0

動作しません。私が理解する限り、[Serializable]属性を持つクラスは、デシリアライズ時に呼び出される特別なシグネチャを持つコンストラクタを暗黙的に実装しています。 –

+0

他の解決方法を試してみてください:) – Stormenet

+0

ありがとう、これは私が探していたものです! –

関連する問題