ASP.NET MVC 3 アプリケーション内から基本的なタスクを管理するために作成した Active Directory サービスがあります (ただし、別のアセンブリにあるため、実際には任意の .NET アプリケーションである可能性があります)。1 つの基本インターフェイスとクラスがIActiveDirectoryService<TPrincipal>
あり、ActiveDirectoryService<TPrincipal>
. これらは、次のようにIUserPrincipalService
とまで 1 レベル拡張されます。UserPrincipalService
IUserPrincipalService : IActiveDirectoryService<UserPrincipal> {
}
UserPrincipalService : ActiveDirectoryService<UserPrincipal>, IUserPrincipalService {
}
Ninject を使用して、使用したいIUserPrincipalService
を渡すシングルトン インスタンスを作成します。PrincipalContext
これは問題なく動作しますが、ユーザーを追加する OU ごとに複数のインスタンスを作成する必要があり、名前が競合するため、Ninject では機能しません。
必要な特定の OU をこのサービスに渡す方法を見つける必要があります。ICityStateUserPrincipalService : IUserPrincipalService
インターフェースを拡張して、Ninject でコンストラクターを変更することを考えました。これに関する問題は、現在所有している OU (たまたま 7 つ) ごとにこれらのサービスのいずれかを作成する必要があることです。また、将来、新しい OU を追加する必要がある場合は、AD でそれを作成し、そのための新しいインターフェイスも作成する必要があります。
これはちょっと気分が悪いです。また、ASP.NET MVC 3 アプリケーション内で実行する必要があり、肥大化とチートが追加されているように感じます。さまざまなプロジェクトで使用する必要がある場合に備えて、そのジェネリックを保持したいため、現在のサービスを収容するアセンブリに追加できません。
現在持っているものを保持し、特定の OU のパスを渡すことができるように拡張可能にする方法はありますか?
質問のタイトルはおそらくあまり良くありません。私はそれを変更するための提案を受け入れていますが、それを表現する方法がわかりませんでした...