Ошибка Ninject с несколькими привязкамиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка Ninject с несколькими привязками

Сообщение Anonymous »

У меня есть приложение MVC4, которое использует отражение для загрузки контроллеров во время выполнения. Эти контроллеры, а также основное приложение используют Ninject для внедрения элементов в конструкторы.

Каждый динамический контроллер поддерживает список всех необходимых ему привязок и сохраняет их в виде модуля Ninject, который основное приложение загружает во время выполнения.

В данный момент у меня возникают проблемы, связанные с тем, что несколько динамических контроллеров содержат одни и те же привязки. Я хочу, чтобы динамические контроллеры были автономными, поэтому я не хочу удалять привязки из проектов контроллеров, и я действительно не хочу анализировать документ txt или xml для чтения всех привязок.

Есть ли способ удалить повторяющиеся привязки или указать Ninject использовать первую попавшуюся привязку, если их несколько.

Загрузка всех привязок сборок, на которые имеются ссылки

public static StandardKernel LoadNinjectKernel(IEnumerable assemblies)
{
var kernel = new StandardKernel();

foreach (var asm in assemblies)
{
asm
.GetTypes()
.Where(t =>
t.GetInterfaces()
.Any(i =>
i.Name == typeof(INinjectBootstrapper).Name))
.ToList()
.ForEach(t =>
{
var ninjectModuleBootstrapper =
(INinjectBootstrapper)Activator.CreateInstance(t);

kernel.Load(ninjectModuleBootstrapper.GetModules());
});
}

return kernel;
}


Класс привязки

public class NinjectBindings : Ninject.Modules.NinjectModule
{
public override void Load()
{
Bind().To();
Bind().To();
}
}


Завод контроллеров

protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
if (controllerType != null)
{
return (IController)kernel.Get(controllerType);
}
else
{
return base.GetControllerInstance(requestContext, controllerType);
}
}


Подробнее здесь: https://stackoverflow.com/questions/237 ... e-bindings
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»