我有asp.net mvc应用程序。我创建了一个自定义成员资格提供者 在web.config中绑定的内容如下:
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider" type="MyProject.Infrastructure.Security.MyMembershipProvider" />
</providers>
</membership>
我将Castle Windsor用于IoC。通常我使用构造函数注入类似:
SomeController(ISomething something)
{
something.do();
...
}
我不能将它用于自定义成员资格类,因为我从web.config收到错误,我没有无参数构造函数。但是如果我使用无参数构造函数,则不会初始化对象。
所以我使用了属性注入:
<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;
}
}
我得到对象引用未找到异常,因为对象(UserRepository)尚未初始化。