私は現在、ドメイン モデルとリポジトリをアプリケーション プラグインで拡張できるソリューションを設計しています。今、私は以下にリストしているいくつかの問題に出くわしました.
私の最初の問題は、ドメイン モデルを拡張可能にすることです。ここで継承を使用することを考えていましたが、正直なところ、同じドメイン オブジェクトを拡張する複数のプラグイン アセンブリを活用する方法がわかりません。私は、すべてのドメイン オブジェクトを部分的に作成し、プラグインがこのように拡張できるようにすることに傾倒しています。同じドメイン オブジェクトを拡張する複数のプラグインがある場合、プラグインごとに異なる拡張ドメイン アセンブリをロードすることを心配する必要はありません。実行時にマージされたドメイン オブジェクトは 1 つだけです。これに関するアイデアはありますか?
もう 1 つの問題は、NHibernate マッピング ファイルの拡張です。各アセンブリに、それが拡張しているドメイン オブジェクトのマッピング ファイルを埋め込み、NHibernate マネージャーに、コア ドメインで提供されるものの代わりにそれを読み込ませることができます。繰り返しになりますが、問題は、同じドメイン オブジェクトを拡張する複数のプラグインがある場合です。1 つのプラグインを別のプラグイン オーバーライド マッピング ファイルにすることができます。最後の問題に対する解決策はそれほど素晴らしいものではありませんが、拡張する前に使用した元のマッピング ファイルの署名としてプラグイン アセンブリにチェックサムを含めることを考えていました。読み込み中にこのチェックサムを確認し、チェックサムが一致する場合にのみプラグイン マップを読み込むことができます。かなり醜いですが、少なくとも、プラグイン アセンブリで拡張するために使用されるベース マップとは異なるマップをオーバーライドすることはありません。
とにかく、これについて皆さんがどう思うか聞きたいです。ありがとう!