У меня есть приложение 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
Ошибка Ninject с несколькими привязками ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ninject – как выполнить IOC с классом, используемым в цикле Parallel.ForEach
Anonymous » » в форуме C# - 0 Ответы
- 84 Просмотры
-
Последнее сообщение Anonymous
-