我正在使用最新的S#arp架构版......
在我的项目中,我正在实现自定义成员资格提供者......
第一个问题,适合放置的地方在哪里?我选择核心项目......
第二个问题,如何使用自定义MembershipProvider工作IoC?
这是我的代码:
public class AdminMemberProvider : MembershipProvider
{
...
private readonly IRepository<Customer> userRepository;
public AdminMemberProvider(IRepository<Customer> __userRepository)
{
Check.Require(__userRepository != null, "userRepository may not be null");
userRepository = __userRepository;
}
...
}
public class AdminRoleProvider : RoleProvider
{
private readonly IRepository<Customer> userRepository;
public AdminRoleProvider(IRepository<Customer> __userRepository): base()
{
Check.Require(__userRepository != null, "userRepository may not be null");
userRepository = __userRepository;
}
...
}
当我尝试执行我的项目时,我收到错误:
分析器错误消息:没有为此对象定义无参数构造函数。
<add name="AdminRoleProvider" type="MalCat.Shop.Core.Membership.AdminRoleProvider, MalCat.Shop.Core" />
IoC不应该处理这个吗?我该怎么做才能解决这个问题?
答案 0 :(得分:1)
我不确定第一个问题,对我来说它并不觉得它属于核心(如果我没有弄错会员提供者在System.Web中),我会把它与网络相关的项目。< / p>
第二个问题之前已经讨论过尖锐的架构组,也许这个线程会有用: https://groups.google.com/forum/#!forum/sharp-architecture
Mauricio Scheffer最近撰写了一篇关于此事的博文: http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html
答案 1 :(得分:0)
我会把它放在服务层(ApplicationServices)中。毕竟这是一项服务。它将在数据层中使用您的UserRepositories。