我试图找出通过 Ninject 使用 DI 设计 MVC4 应用程序的最佳方法。
当用户进入系统时,他们会看到一个登录名,他们可以在其中选择许多数据库之一。每个数据库都是数据库服务器上的一个单独目录。我需要做的是在用户登录后注入一个包含数据库连接详细信息的存储库。存储库的类型不会改变,只是连接详细信息。
我找到了这篇我可以制作的帖子,但我不确定这是否是适合我情况的最佳方法。人们还成功使用了哪些其他选项?
我试图找出通过 Ninject 使用 DI 设计 MVC4 应用程序的最佳方法。
当用户进入系统时,他们会看到一个登录名,他们可以在其中选择许多数据库之一。每个数据库都是数据库服务器上的一个单独目录。我需要做的是在用户登录后注入一个包含数据库连接详细信息的存储库。存储库的类型不会改变,只是连接详细信息。
我找到了这篇我可以制作的帖子,但我不确定这是否是适合我情况的最佳方法。人们还成功使用了哪些其他选项?
问题解决了。因为我希望在我的具体存储库的构造函数中传递连接字符串,所以我可以使用以下 Ninject WithConstructorArgument:
IBindingWithOrOnSyntax<T> WithConstructorArgument(string name, Func<Ninject.Activation.IContext, object> callback);
使用此重载,每次创建对象时都会调用回调。所以我的代码看起来像这样,每次都会调用 MakeConnectionString 方法。
_Kernel = new StandardKernel();
_Kernel.Bind<ISomeItemRepository>().To<FakeSomeItemRepository>()
.WithConstructorArgument("connectionString", (c) =>
{
MakeConnectionString();
});