Ninject dans .NET Core

J’essaie d’installer Ninject 3.3.2 dans .NET Core, publié en mai 2016. J’ai une erreur: La dépendance Ninject 3.2.2 ne prend pas en charge le framework .NETCoreApp, Version = v1.0. Quelqu’un a-t-il eu un problème similaire et y a-t-il une solution à cela?

Ninject ne prend pas en charge .NET Core. Vous pouvez consulter son site Web pour vous assurer qu’aucune version ne le prend en charge.

ASP.NET Core possède son propre conteneur dans Dependency Injection. Voir ici .

Ninject 3.3.0 a été publié le 26 septembre 2017 et vise désormais .NET Standard 2.0 et fonctionne donc également sur .NET Core 2.0 .

Au fil des choses (voir les questions / discussions sur GitHub), il semble probable que certains des changements apportés à la version 4.0-bêta seront annulés. Je ne m’attendais pas à une finale 4.0 sous peu. Par conséquent, je conseillerais d’aller avec la version 3 actuelle.

Je voulais juste append; Bien que les deux réponses précédentes soient correctes dans le fait que le kernel ASP.Net fournit une dependency injection intégrée, cela n’est PAS suffisant pour des scénarios plus avancés. Comme il ne prend pas en charge une multitude de fonctionnalités sockets en charge par Ninject, AutoFac, Unity ou StructureMap.

À l’heure actuelle, les seules bibliothèques DI que je connaisse qui prennent totalement en charge le kernel .net sont AutoFac et, désormais, Unity également. Il est très simple d’append ceci. La seule chose à faire pour remplacer l’ID intégrée est la suivante. Cet exemple est pour AutoFac mais il est presque identique pour Unity.

Commencez par remplacer l’annulation de ConfigureServices dans startup.cs par un IServiceProvider (dépendance à partir d’AutoFac), comme suit:

public IServiceProvider ConfigureServices(IServiceCollection services) 

Créez ensuite un générateur de conteneur, générez et résolvez un IServiceProvider à partir de ConfigureServices:

 var builder = new ContainerBuilder(); builder.Populate(services); var container = builder.Build(); return container.Resolve(); 

J’ai un wrapper autour de cette seconde partie qui vous permet de charger et de construire dynamicment différentes configurations à l’aide de modules AutoFac, que je pourrais être convaincu de télécharger sur GitHub ou quelque chose si l’intérêt s’y prête.

Ninject ne prend pas en charge .Net Core. Au lieu de cela, nous pouvons utiliser l’dependency injection du kernel .net. Voici les étapes à mettre en œuvre.

  1. Accédez à la page startup.cs de public void ConfigureServices(IServiceCollection services)
  2. Add services.AddTransient();
  3. Accédez au contrôleur sur lequel vous souhaitez appliquer l’dependency injection.
  4. Créer une private Interface _propertyName; globale private Interface _propertyName;
  5. Passez la variable de type d’interface au constructeur comme

  public Constructor(Interface name) { _propertyName= name; } 
  1. Vous pouvez maintenant accéder aux membres de la classe via _propertyName.