我试图通过Ninject找出使用DI设计MVC4应用程序的最佳方法。
当用户进入系统时,会向他们显示登录信息,以便他们可以选择众多数据库中的一个。每个数据库都是数据库服务器上的单独目录。我需要做的是在用户登录后注入一个包含数据库连接详细信息的存储库。存储库的类型不会改变,只是连接细节。
我找到了this帖子,我可以开展工作,但我不确定这是否适合我的情况。人们成功使用了哪些其他选择?
答案 0 :(得分:0)
问题解决了。由于我希望在我的具体存储库的构造函数中传递连接字符串,我可以使用以下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();
});