benutzerdefinierte Mitgliedschaft Provider und Einheit Abhängigkeit Injektion

8

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.

    
SOfanatic 18.05.2013, 16:42
quelle

1 Antwort

8

Beantworten Sie die zweite Frage

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.

%Vor%

Zur ersten Frage

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 :

%Vor%

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.

    
onof 20.05.2013, 06:32
quelle