【发布时间】:2009-08-20 11:30:03
【问题描述】:
我有 asp.net mvc 应用程序。我创建了一个自定义会员提供程序 像这样绑定在 web.config 中:
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider" type="MyProject.Infrastructure.Security.MyMembershipProvider" />
</providers>
</membership>
我将温莎城堡用于 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)尚未初始化,我得到对象引用未找到异常。
【问题讨论】:
-
您的班级注册正确吗?如果您尝试解析 IUserRepository 会成功吗?
标签: asp.net-mvc asp.net-membership castle-windsor