タイトルの質問...要するに、エンティティクラスを返す操作を公開するWCFサービスがあります。クライアント側のクラスは、デフォルトのSystem.Objectの代わりに抽象基本クラスを継承します。抽象基本クラスには、デフォルトのコンストラクターが定義されています。サービスメソッドの1つを呼び出すと、datacontractシリアライザが返されたオブジェクトを生成するときにそのコンストラクタが呼び出されると期待します。ただし、コンストラクタは呼び出されません。一方、エンティティクラスのインスタンスを自分で作成すると、抽象クラスのコンストラクタが呼び出されます。WCFデシリアライザでオブジェクトを初期化するときに、抽象基本クラスのコンストラクタが呼び出されないのはなぜですか?
なぜ、なぜ、回避策がありますか?または、私は何かが恋しいのですか?オブジェクトをマテリアライズするときにdatacontractシリアライザによって呼び出される別のコンストラクタシグネチャがありますか?もしそうでないなら、 "新しいSomeClass()"呼び出しが行うのと同じ方法でコンストラクタを呼び出さずにシリアライザがどのようにオブジェクトをマテリアライズすることができますか?今日はあまりコーヒーを飲んでいませんでしたか(これまで2〜3杯しかありませんでした)?
クイックアンサーに感謝します。ワオ。それは私を驚かせます。私はすべてのオブジェクトの初期化によってコンストラクタが呼び出されると考えました。ああ、私は今日何か新しいことを学んだ... :) – KristoferA
それは確かに驚くべきことです。初めて見た時にリフレクターで掘り起こす必要がありました! –
[好奇心から]フォローアップの質問は次のようになります:_それは彼らがそれをそうしましたか?パフォーマンス?私たちの頭を混乱させるには?それとももっと良い理由? :) – KristoferA