4

非標準のシリアル化形式を実装したいと考えています。

逆シリアル化を行うときは、コンストラクターを呼び出さずにオブジェクトのインスタンスを作成する必要があります。

Framework にはありますが
System.Runtime.Serialization.FormatterServices.GetUninitializedObject(Type type)、Windows Metro Framework にはクラス.NETがありません。FormatterServices

Windows Metro Framework でコンストラクターを呼び出さずにオブジェクトをインスタンス化する方法を知っている人はいますか?

4

2 に答える 2

2

私の知る限り、あなたはできません。プライベート/保護/内部コンストラクターを呼び出すこともできません。.netcoreではリフレクションが制限されています(Silverlightモデルと同様ですが、GetTypeInfo()の問題が追加されています)。

私が提案できる唯一のオプションは、適切なことを行うユーザー提供のファクトリメソッド、または同様にファクトリインターフェイスを渡す機能を個別にサポートすることです。これにより、シリアル化エンジンから構造が取り除かれ、特定のタイプを認識しているコードの制御に戻ります。

于 2012-10-26T15:27:27.320 に答える
0

私は間違っているかもしれませんが、オブジェクトをインスタンス化するときは、少なくともコンストラクターを実行する必要があります。コンストラクターが宣言されていない場合でも、既定の空のコンストラクターが呼び出されます。インスタンス化により、クラスがオブジェクトになります。

だから私にはあなたの質問には答えがありません。

必要に応じて、実行時にデフォルトの空のコンストラクターを構築できるかもしれません。こちらをご覧ください

于 2012-10-26T15:37:09.697 に答える