私は本当に DI/IoC のことにはまってしまいました。ただし、必要なパラメーターなしのコンストラクターを持つクラスを実装する継承されたクラスがいくつかあるため、サービスロケーターを使用して必要なものを取得します。
MyMembershipProivder() : MyMembershipProvider(ServiceLocator.Current.GetInstance<...>){}
MyMembershipProivder(IMemberRepo memberRepo){...}
完璧に動作します。ただし、MVC3 DependencyResolver も使用しているため、次のことを行うしかありません。
var locator = new NinjectServiceLocator(kernel);
DependencyResolver.SetResolver(locator);
ServiceLocator.SetLocatorProvider(() => locator);
DependencyResolver は MVC アプリ内で使用され、ServiceLocator はさまざまなクラス ライブラリ全体で使用されます。
これはこれを行うための理想的な方法ですか?何か不足していますか?
アップデート
上記の例では、クラスはカスタム asp.net メンバーシップ プロバイダーです。asp.net メンバーシップ プロバイダー ファクトリでは、カスタム プロバイダーにパラメーターのないコンストラクターが必要なため、サービス ロケーターを使用して内部で使用するリポジトリを挿入する必要があります。