Question

Je suis en train de configurer le NCommon NHRepository dans mon projet avec carte de structure. Comment puis-je arrêter cela de choisir le constructeur vorace?

 public class NHRepository<TEntity> : RepositoryBase<TEntity>
 {

    public NHRepository () {}


    public NHRepository(ISession session)
    {
        _privateSession = session; 
    }

    ...
}

Ma structure configuration de carte

ForRequestedType(typeof (IRepository<>))
                .TheDefaultIsConcreteType(typeof(NHRepository<>))

Vive Jake

Était-ce utile?

La solution

Vous pouvez définir l'attribut pour le [DefaultConstructor] constructeur que vous souhaitez par défaut. Dans votre cas, la mise sur le constructeur rendrait NHRepository() la constuctor par défaut pour StructureMap initialiser.

Mise à jour: bien, dans la dernière version de StructureMap, en utilisant .NET 3.5, vous pouvez également spécifier la méthode de SelectConstructor:

var container = new Container(x =>
{
  x.SelectConstructor<NHRepository>(()=>new NHRepository());
});

Enfin, je suis sûr que vous seriez en mesure de le définir dans la configuration XML de StructureMap, mais je n'ai pas utilisé cela. Vous pouvez faire une petite recherche sur elle. Pour de plus amples informations sur la méthode ci-dessus, voir: http://structuremap.sourceforge.net/ConstructorAndSetterInjection.htm # section3

Autres conseils

+1 pour Razzie parce que cela fonctionnerait si le NHRepository était dans mon propre assemblée, au lieu que je choisis d'envelopper le NHRepository avec mon dépôt comme ci-dessous ..

public class Repository<T> : NHRepository<T>
{
    [DefaultConstructor]
    public Repository()
    {

    }

    public Repository(ISession session)
    {

    }
}

ForRequestedType(typeof (IRepository<>))
                .TheDefaultIsConcreteType(typeof (Repository<>));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top