我在asp.mvc项目中设置了“Ninject”。并且每个控制器都可以获得其依赖类。但我在mvc项目中有一个不是控制器的类。这是一个扩展“MembershipProvider”的简单类(因为我已经制作了自定义成员资格),我需要在其中注入“UserRepository”类。 在NinjectControlelrFactory中,我提出了它:
private void AddBindings()
{
ninjectKernel.Bind<IUserRepository>().To<UserRepository>().WithConstructorArgument(
"connectionString", ConfigurationManager.ConnectionStrings["connStr"].ConnectionString);
}
但是如何从非控制器类中获取它? PS 我不能通过构造函数注入。
我有一些解决方案,但我不知道它是多么“干净”:
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<IUserRepository>()
.To<UserRepository>()
.WithConstructorArgument("connectionString", "ttttttttttttt");
//var tc = kernel.Get<IUserRepository>();
this.userRepository = kernel.Get<IUserRepository>();
}
答案 0 :(得分:1)
使用属性注入。在Ninject中注册MembershipProvider
并使用Property injection。
您需要通过ninject context实例化MembershipProvider
。
查看这些文章。
Property Injection in ASP.NET MVC with Ninject
Injecting properties in Ninject 2 without 'Inject' attribute