Ninject2とASP.NETMVC2を使い始めようとしています。このチュートリアルhttp://www.craftyfella.com/2010/02/creating-aspnet-mvc-2-controller.htmlに従って、作成しました。 Ninjectを使用し、最初の抽象を具体的な実装にバインドするコントローラーファクトリ。ここで、別のアセンブリ(具体的なSQLリポジトリが配置されている場所)からリポジトリタイプをロードしたいのですが、それを機能させることができません。これが私のコードです:
Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
}
コントローラーファクトリー:
public class Kernelhelper
{
public static IKernel GetTheKernel()
{
IKernel kernel = new StandardKernel();
kernel.Load(System.Reflection.Assembly.Load("MyAssembly"));
return kernel;
}
}
public class MyControllerFactory : DefaultControllerFactory
{
private IKernel kernel = Kernelhelper.GetTheKernel();
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null ? null : (IController)kernel.Get(controllerType);
}
}
「MyAssembly」にはモジュールがあります:
public class ExampleConfigModule : NinjectModule
{
public override void Load()
{
Bind<Domain.CommunityUserRepository>().To<SQLCommunityUserRepository>();
}
}
これで、エントリポイントのMockRepositoryオブジェクトをたたくと、正常に動作し、リポジトリを必要とするコントローラが正常に動作します。kernel.Load(System.Reflection.Assembly.Load( "MyAssembly")); また、その仕事をしてモジュールを登録しますが、リポジトリを必要とするコントローラーを呼び出すとすぐに、NinjectからActivationExceptionが発生します。
一致するバインディングは使用できず、タイプは自己バインドできません。アクティベーションパス:2)タイプAccountControllerのコンストラクターのパラメーター_repへの依存性CommunityUserRepositoryの注入1)AccountControllerの要求
誰かが私に外部アセンブリからのバインディングタイプのベストプラクティスの例を教えてもらえますか(これは本当に依存性注入の重要な側面です)?ありがとうございました!