Damit nicht beheben service für geben beim Versuch zu aktivieren
Ich habe eine Datei Repository.cs
enthält eine Schnittstelle und deren Umsetzung etwa so:
public interface IRepository
{
IEnumerable<City> Cities { get; }
void AddCity(City newCity);
}
public class MemoryRepository : IRepository
{
private List<City> cities = new List<City> {
new City { Name = "London", Country = "UK", Population = 8539000},
new City { Name = "New York", Country = "USA", Population = 8406000 },
new City { Name = "San Jose", Country = "USA", Population = 998537 },
new City { Name = "Paris", Country = "France", Population = 2244000 }
};
public IEnumerable<City> Cities => cities;
public void AddCity(City newCity)
{
cities.Add(newCity);
}
}
Und in der HomeController
ich versuche mich zu übergeben thhe Cities
getter, um die Ansicht in etwa so:
public class HomeController : Controller
{
private IRepository repository;
public HomeController(IRepository repo)
{
repository = repo;
}
public IActionResult Index()
{
return View(repository.Cities);
}
}
Jedoch bekomme ich diesen Fehler:
InvalidOperationException: kann Nicht beheben service für geben
"Städte.Modelle.IRepository', während Sie versuchen zu aktivieren
"Städte.Controller.HomeController'.
Wo hast du dich registriert für den service? Können Sie hinzufügen, dass code auf Ihre Frage?
InformationsquelleAutor Vojislav Kovacevic | 2017-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie sich registrieren
IRepository
in das Dependency Injection-framework. Zum Beispiel, inConfigureServices
Sie hinzufügen können:Sehen hier für weitere Informationen über Dependency Injection in ASP.NET Core.
AddScoped
ist nur ein Beispiel, aber es ist einer der häufigsten Ansätze:Standardmäßig, die ASP.NET Kern-framework ist verantwortlich für das erstellen von eigenen Controller, so DI ist der standard-Weg, um plug in. Sie können übernehmen Sie die Kontrolle von controller Schöpfung selbst, aber dies ist ein fortgeschrittenes Thema und ich glaube, dass wird noch benötigt DI auf einer Ebene. Wenn Sie einen besonderen Grund, um zu vermeiden, DI, sollten Sie eine neue Frage für die, speziell.
InformationsquelleAutor Kirk Larkin
Sind wir immer diesen Fehler in Entity frame work " core database-first-Ansatz. Ich folgte den Schritten, und die Fehlermeldung bekam aufgelöst
enter code here
Schritt 1: Überprüfen Sie die Kontext-Klasse-Konstruktor sollte wie folgt sein
Schritt 2: In der Startup-Datei
Schritt 3: Connection string im appsettings -
Schritt 4: Entfernen der standardmäßigen code in OnConfiguring Methode im Kontext der Klasse
InformationsquelleAutor karunakar bhogyari
Haben Sie, um Ihre Umsetzung zu DI (Dependeny Injection) Abschnitt. Für .Net Core, Mvc, es wäre so:
InformationsquelleAutor Ekrem
Dies kann nicht hilfreich für dein code-Beispiel, aber in meinem Fall den gleichen Fehler, war das Ergebnis eine zirkuläre Abhängigkeit.
InformationsquelleAutor gneric
Einer Methode wie diese muss Hinzugefügt werden, um Ihre
Startup
:Dienstleistungen sollte registriert werden bevor Sie verwendet werden.
UPDATE:
Wenn Sie nicht möchten, verwenden DI auf Ihre Anwendung, erstellen Sie einfach und Instanz
MemoryRepository
auf der Konstruktor derHomeController
wie diese:siehe aktualisierte Antwort bitte.
Es gibt noch die gleichen Fehler.
InformationsquelleAutor Afshar Mohebbi
Anderen Antworten sind RICHTIG, aber ich war die Spinnerei eine neue asp.net core 2.1.x-Projekt und habe diesen Fehler.
Endete als ein Tippfehler von MIR.
Also in meinem Controller, anstatt Korrekt mit der Schnittstelle, wie diese
Meine Tippfehler, hatte mich mit
ApplicationRepository
stattApplicationRepository
Beachten Sie unter, und so mit KEINE FEHLER entdecken das fehlende "ich" war ein Spaß :/
Damit der controller war nicht die Lösung der DI...
InformationsquelleAutor Tom Stickel