SOLID およびその他のベスト プラクティスに従って、Active Directory ラッパーを作成しています。インターフェイスは現在「IActiveDirectory」です。
私が今抱えている問題は、実装 ActiveDirectory が IDisposable を実装して、このラッパー内で作成および破棄されるいくつかのリソースを破棄する必要があることです。インターフェイスなどにコーディングしようとしているときに、この問題に対処する方法がわかりません.漏れやすい抽象化 (つまり、IDisposable を使用して IActiveDirectory をデコレートする) を作成したくありません。基礎となる依存関係のパフォーマンスが原因で、サービスを細かくすることはできません (つまり、リソースの作成/破棄をメソッド呼び出しにスコープする)。
私は現在、IActiveDirectory のコンシューマーがオンデマンドで 1 つを作成できるようにファクトリーを持っていますが、コンシューマーがリソースの処理が完了したことを通知するためのクリーンで便利な方法が必要です。
リソース ラッパーの抽象化を漏らさずにコントラクト (つまりインターフェイス) を消費者に提供するにはどうすればよいですか? インターフェイスなしで実装を公開するだけですか?コンシューマーまたは DI コンテナーがこのサービスの有効期間を管理する方法はありますか?