3

ninject を使用すると、特定の実装にバインドできることがわかります。

ISomeCache myCache = Ninject.Get<ISomeCache>();

ninject をバインドする具体的な実装をロードします。

データベース (Web アプリケーション) で使用する具体的な実装を保存し、管理パネルでそれを変更すると、その場で必要なクラスを使用する必要があるとします。

これは可能ですか?

4

1 に答える 1

5

実行しているコンテキストを特定できる限り、実行できます。

kernel.Bind<IMyService>().To<MyUserService>().When(request => GetSiteContext() == "user");

kernel.Bind<IMyService>().To<MyAdminService>().When(request => GetSiteContext() == "admin");

ここで、GetSiteContext は、実行中のコンテキストを判別するために作成するメソッドです。.When(...)はパラメータとして a を受け取りFunc<IRequest,bool>ます ( に等しいPredicate<IRequest>)。

于 2009-09-30T16:03:01.923 に答える