DataContractSerializerな話でのコンストラクタ?
-
21-08-2019 - |
質問
って改めて気がついたことがある狂ったものと全く不可能な時deserializingオブジェクトの DataContractSerializerないのコンストラクタ !
このクラスは、たとえば、次のようになります。
[DataContract]
public class Book
{
public Book()
{ // breakpoint here
}
[DataMember(Order = 0)]
public string Title { get; set; }
[DataMember(Order = 1)]
public string Author { get; set; }
[DataMember(Order = 2)]
public string Summary { get; set; }
}
私が直列化復元オブジェクトのクラスのブレークポイントを叩いていない。私は絶対にない発想することが可能であるということで唯一のコンストラクタをこのオブジェクト!
えられているか追加のコンストラクタにより作成したコンパイラでの DataContract
属性が見つからなけを反射...
うというのはこのどうすればインスタンスのプログラミング未経験者なしのコンストラクタと呼ばれるのは??
注意:知っていることを利用できま OnDeserializing
属性を初期化する方法について私のオブジェクトが直列化復元が始まり、この対象ではないが私の質問です。
解決
DataContractSerializer
( BinaryFormatter
)を使用しませんの 他の コンストラクタです。このオブジェクトとして空にします。
例えば:
Type type = typeof(Customer);
object obj = System.Runtime.Serialization.
FormatterServices.GetUninitializedObject(type);
のは、直列化復元プロセス(またはコールバック必要な場合)を完全に初期化します。
他のヒント
あのシナリオが行われるこの行動です。考え、以下の:
1)オブジェクトがコンストラクタセットの新しいインスタンスは、"初期化"の状態です。そのメソッド呼び出されるこのインスタンスは、持参し、"処理"の状態です。使わない新規objectの作成については"加工"の状態で、それでもしたいデserialize/直列化復元のインスタンス.
2)作成したシェイクスピアの"マクベス"民間のコンストラクタといくつかの静的特性を制御する小型のセット可コンストラクタのパラメータ今ことができserialize/直列化復元)します。
XmlSerializerの動作るかもしれません。していた問題をXmlSerializerではデフォルトのコンストラクタです。の関連性を有するもことは、あってはならないことでは民間レベルで物を掴んだ.そのXmlSerializerもニーズの公開get/setメソッドセッターの性質のため、serialize/直列化復元).
と思うのDataContractSerializer/BinaryFormatterのように行動停止状態のインスタンスは、直列化の際に、再開時の直列化復元.つまり、インスタンスでない"の構築"が"復興"への早います。
して既に述べたように、[OnDeserializing]属性で非直列化されたデータます。