Ich habe asp.net mvc-Anwendung. Ich habe einen benutzerdefinierten Mitgliedschaftsanbieter erstellt, die in web.config wie folgt gebunden ist:Burg Windsor injiziert keine Abhängigkeit in Eigenschaften
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider" type="MyProject.Infrastructure.Security.MyMembershipProvider" />
</providers>
</membership>
Ich benutze Schloss Windsor für IoC. Normalerweise verwende ich den Konstruktor Injektion etwas wie:
SomeController(ISomething something)
{
something.do();
...
}
Ich kann dies nicht für die benutzerdefinierte Mitgliedschaft Klasse verwenden, weil ich einen Fehler von web.config bekommen, dass ich nicht einen parameterlosen Konstruktor haben. Aber wenn ich einen parameterlosen Konstruktor verwende, würde das Objekt nicht initialisiert werden.
So habe ich Eigenschaft Injektion wie folgt:
<castle>
<components>
<component id="usersRepos" service="MyProject.Core.Repositories.IUserRepository, MyProject.Core" type="MyProject.Data.RepositoryImplementations, MyProject.Data"></component>
</components>
</castle>
...
public class MyMembershipProvider : MembershipProvider
{
public IUserRepository UserRepository{get; set;}
public override bool ValidateUser(string username, string password)
{
if (UserRepository.UserExists(username, password))
{
return true;
}
return false;
}
}
Und ich Objektverweis Ausnahme wurde nicht gefunden, weil das Objekt (UserRepository) wurde nicht initialisiert.
Ist Ihre Klasse korrekt registriert? Wenn Sie versuchen, IUserRepository aufzulösen, wird es gelingen? –