Ich verwende Autofac für IoC in meinem ASP.Net MVC 4-Projekt. Autofac hat Probleme, das Repository zu initialisieren und es an den API Controller zu übergeben.
Ich bin mir sicher, dass etwas in meiner Konfiguration fehlt.
Hier ist der Fehler, den ich bekomme, wenn ich zu: https://localhost:44305/api/integration
Hier sind einige relevante Code-Teile:
IoC Bootstrapper:
%Vor%IRepository:
%Vor%SharePoint-Repository:
%Vor%IntegrationController:
%Vor%IEntity:
%Vor%Entität:
%Vor%Integration:
%Vor% Sie haben Ihre IRepository
falsch registriert. Mit der Zeile:
Sie haben Autofac gesagt, dass wenn jemand eine IRepository<IEntity>
anfordert, geben Sie ihm eine SharePointRepository<IEntity>
, aber Sie verlangen eine konkrete IRepository<Integration>
, damit Sie eine Ausnahme bekommen.
Was Sie brauchen, ist die allgemeine Registrierungsfunktion von Autofac . Ändern Sie Ihre Registrierung zu:
%Vor% Es funktioniert so, wie Sie es erwarten würden, wenn Sie nach einem IRepository<Integration>
fragen, es wird ein SharePointRepository<Integration>
geben.
Sie haben auch noch ein zweites Problem: Ihr SharePointRepository
hat nur einen internal
-Konstruktor.
Autofac sucht standardmäßig nur nach public
-Konstruktoren, also ändern Sie entweder Ihren Konstruktor und die Klasse in public
oder Sie müssen Autofac anweisen, nach nicht-öffentlichen Konstruktoren mit der FindConstructorsWith
-Methode zu suchen:
Tags und Links asp.net-web-api autofac asp.net-mvc-4 sharepoint-2013