興味深い - プレゼンテーション レイヤーに対して抽象化を行う前に、BL と DAL の間に抽象化を配置します。
他の質問で使用されているアプローチは合理的だと思われます-それを再利用してみませんか?
- はい、工場が必要です。ただし、これを共通のクラス/アセンブリに含めて、
object
を返すだけにすることができます。これは、返されたときにキャストできます。つまり、BL 内で呼び出されているポイントでキャストできます。
- (完全を期すために:
Activator.CreateInstance()
)(他の質問で使用したように)使用するのが正しい方法です。
- DAL の場合、config に格納されている値を (ファクトリに渡す引数として) 使用する傾向があります。DAL の実装を頻繁に変更することは一般的ではないため、構成は私にとってはうまく機能します。
- BL と DAL の間のコントラクト/抽象化を設計するときは、Interface Segregation Principle (ISP) を順守してください。これを正しく行えば、さまざまな物理 DAL 実装を一度に組み合わせることができます。
- DTO とファクトリを共通のアセンブリ (おそらく同じもの) に保持すると、BL とさまざまなDAL実装でそれらを簡単に再利用できます。これを行うと、システム全体を再コンパイルおよび再デプロイすることなく、DAL 実装を追加/更新できるようになります。