質問: 私はソースを見てきましたが、私は何も見つけませんでしたが(私はILで偉大ではありませんでしたが)、Dapperに新しいインスタンスをインスタンス化するのではなくクラスインスタンスを提供する方法があるかどうかを確認したいと思います。これは、2つの異なるストアドプロシージャを2回別々に呼び出す場合があります.1つは「エンティティ」の列を返し、もう1つは他の列を返します。しかし、最初の呼び出しで受け取ったエンティティを使用する2番目のクエリの代わりに、代わりに本質的に同じエンティティの2つのインスタンスを取得します。 Dapperが既存のエンティティクラスを使用し、クエリ結果をその既存のクラスにマッピングする方がはるかに望ましいでしょう。 Dapperのクラスインスタンス化を傍受して、必要に応じて既存のインスタンスを提供する方法はありますか?
回答: 優れた質問。現時点では、特定のコンストラクタを指定することができますが、常に`new` s: ``` il.Emit(OpCodes.Newobj, specializedConstructor); ``` 私たち*ができる*ことは、コンストラクタまたは`static`ファクトリメソッドを指定することです。私はこれがコアマテリアライザーコードと他のいくつかの場所の3行の変更にすぎないと考えています。不可能ではありませんが、 *呼び出しコンテキストの*ような質問になり*ます* .Dapperは呼び出し元が指定したコンテキストをどのように工場に提供しますか?繰り返しますが、すべて可能です(protobuf-netはほとんど同じことをします)。 しかし、今日はそれが存在しません。それは不可能ではないでしょう。