2010-11-16 16 views
1

Je utilise le S # arp lastest version architecture ...S # arp Architecture avec IoC personnalisée MembershipProvider

Dans mon projet, je suis mise en œuvre d'une mesure MembershipProvider ...

Première question, Où est le bon endroit pour le mettre? Je choisis Core projet ...

Deuxième question, Comment fonctionne IoC avec MembershipProvider personnalisé?

Voici mon code:

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; 
    } 
    ... 
} 

Quand j'ai essayé d'exécuter mon projet, je suis l'erreur:

Parser Message d'erreur: Aucun constructeur défini parameterless pour cet objet.

<add name="AdminRoleProvider" type="MalCat.Shop.Core.Membership.AdminRoleProvider, MalCat.Shop.Core" /> 

L'IoC ne devrait-il pas gérer cela? Que suis-je censé faire pour réparer ça?

Répondre

1

Je ne suis pas sûr de la première question, pour moi, il ne semble pas qu'il appartient dans le noyau (si je ne me trompe pas le fournisseur d'adhésion est dans System.Web), je le mettrais avec un projet lié au web.

La deuxième question a été discutée avant sur le groupe d'architecture forte, peut-être ce fil sera utile: https://groups.google.com/forum/#!forum/sharp-architecture

Mauricio Scheffer a écrit un billet de blog récemment à ce sujet: http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html

0

je mettrais dans la couche Service (ApplicationServices). C'est un service après tout. Et il utilisera vos UserRepositories dans la couche de données.