Ответ 1
Ninject не поддерживает .NET Core. Вы можете проверить его на сайте, чтобы убедиться, что нет версии, которая ее поддерживает.
В ASP.NET Core встроен собственный контейнер Injection Dependency. См. здесь.
Я пытаюсь установить Ninject 3.3.2 в .NET Core, выпущен в мае 2016 года. У меня возникла ошибка: зависимость Ninject 3.2.2 не поддерживает фрейм .NETCoreApp, Version = v1.0. У кого-то была аналогичная проблема, и есть ли какое-либо решение для этого?
Ninject не поддерживает .NET Core. Вы можете проверить его на сайте, чтобы убедиться, что нет версии, которая ее поддерживает.
В ASP.NET Core встроен собственный контейнер Injection Dependency. См. здесь.
Ninject 3.3.0 был выпущен 26 сентября 2017 года и теперь нацелен на .NET Standard 2.0 и, следовательно, также работает на .NET Core 2.0.
С точки зрения вещей (см. вопросы/обсуждения на GitHub), кажется, что некоторые изменения в 4.0-бетах будут отменены. Я бы не ожидал финала 4.0 в ближайшее время. Поэтому я бы посоветовал перейти к выпуску текущей версии 3.
Просто хотел добавить; в то время как оба предыдущих ответа верны в том, что ядро ASP.Net обеспечивает встроенную инъекцию зависимостей, этого недостаточно для более сложных сценариев. Поскольку он не поддерживает целый ряд функций, поддерживаемых Ninject, AutoFac, Unity или StructureMap.
В настоящее время единственными библиотеками DI, о которых я знаю, полностью поддерживает ядро .net, являются AutoFac и теперь Unity. Это очень просто добавить. Единственное, что вам нужно сделать, чтобы заменить встроенный DI, выглядит следующим образом. Этот пример для AutoFac, но почти идентичный для Unity, он выглядит.
Сначала замените пустоту на ConfigureServices в startup.cs с помощью IServiceProvider (зависимость от AutoFac) следующим образом:
public IServiceProvider ConfigureServices(IServiceCollection services)
Затем создайте конструктор контейнера, создайте и разрешите IServiceProvider из ConfigureServices:
var builder = new ContainerBuilder();
builder.Populate(services);
var container = builder.Build();
return container.Resolve<IServiceProvider>();
У меня есть обертка вокруг этой второй части, которая позволяет динамически загружать и строить различные конфигурации с помощью модулей AutoFac, которые я могу убедить загрузить в GitHub или что-то в этом случае, если у вас есть интерес.
.Net Core не поддерживает Ninject, вместо этого мы можем использовать инъекцию зависимости ядра .net. Ниже приведены шаги для реализации.
public void
ConfigureServices(IServiceCollection services)
services.AddTransient<Interface, Class>();
private Interface _propertyName;
public Constructor(Interface name)
{
_propertyName= name;
}