如何使用ninject在nonController类中注入类

时间:2011-09-04 13:18:00

标签: asp.net-mvc ninject

我在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>();
            }

1 个答案:

答案 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