Как внедрить класс в неконтроллерный класс с помощью ninject - PullRequest
1 голос
/ 04 сентября 2011

Я настроил «Ninject» в своем проекте asp.mvc. И это прекрасно работает, каждый контроллер получает свои классы зависимостей. Но у меня есть один класс в проекте 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 Ответ

1 голос
/ 04 сентября 2011

Использование свойства Injection.Зарегистрируйте свой MembershipProvider в Ninject и используйте Внедрение свойства .

Вам нужно будет создать экземпляр MembershipProvider через пустой контекст.

Проверьте эти статьи.

Внедрение свойств в ASP.NET MVC с Ninject

Внедрение свойств в Ninject 2 без атрибута «Впрыск»

...