Ich habe ein paar Fragen gefunden, die denen ähnlich sind, die ich poste, aber ich bekomme von ihnen nicht das, was ich wirklich brauche.
Ich habe immer noch Probleme, meine CustomMembershipProvider
mit Microsoft Unity DI
zu implementieren.
Benutzerdefinierte Mitgliedschaft:
%Vor%Benutzerservice:
%Vor%AccountController:
%Vor% Wie kann ich eine Schnittstelle für meine MembershipProvider
-Klasse erstellen?
Ich habe es versucht:
%Vor% Aber ich glaube nicht, dass das funktioniert, also bleibe ich stecken und weiß nicht, wie ich MembershipProvider
mit meinen Repositories, UoW, Diensten und Unity DI implementieren kann.
Das Problem mit MembershipProvider
und RoleProvider
ist, dass sie nicht vom Container, sondern vom Framework erstellt werden. AFAIK Die einzige Möglichkeit, den aktiven Mitgliedschaftsanbieter festzulegen, ist die Datei web.config.
Also, wenn Sie den Container verwenden möchten, um Abhängigkeiten wie Repositories, Dienste usw. über den Container aufzulösen, müssen Sie das gute alte ( Ich bin Witze ) Service Locator Muster verwenden.
Sie können den aktiven Mitgliedschaftsanbieter weiterhin mithilfe von Constructor Injection in die Controller injizieren.
Erstellen Sie zunächst eine Schnittstelle mit allen Methoden, die Sie benötigen. Das Problem hierbei ist, dass MembershipProvider
eine konkrete Klasse ist, sodass Sie keine Schnittstelle von ihr erben können. Erstellen Sie einfach Ihre neue Schnittstelle und kopieren Sie die Methodensignaturen der Funktion, die Sie benötigen, aus MembershipProvider
:
Dann lassen Sie es von Ihrem Provider implementieren und injizieren:
%Vor%Natürlich müssen Sie Ihren benutzerdefinierten Mitgliedschaftsanbieter in der Datei web.config registrieren.