S#arp Architecture :: IoC with Custom MembershipProvider

时间:2010-11-16 17:19:40

标签: ioc-container s#arp-architecture

我正在使用最新的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不应该处理这个吗?我该怎么做才能解决这个问题?

2 个答案:

答案 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。