2

J'essaie d'obtenir structuremap pour construire l'objet SessionSource de Fluent Nhibernate pour certains de mes tests d'intégration. Le seul problème est que la mise en œuvre concrète de Fluent de ISessionSource (SessionSource) dispose de 3 constructeurs:Lors de l'utilisation de Dependency Injection avec StructureMap, comment choisir parmi plusieurs constructeurs?

public SessionSource(PersistenceModel model) 
    { 
     Initialize(new Configuration().Configure(), model); 
    } 

    public SessionSource(IDictionary<string, string> properties, PersistenceModel model) 
    { 
     Initialize(new Configuration().AddProperties(properties), model); 
    } 

    public SessionSource(FluentConfiguration config) 
    { 
     configuration = config.Configuration; 

     sessionFactory = config.BuildSessionFactory(); 
     dialect = Dialect.GetDialect(configuration.Properties); 
    } 

J'ai essayé de configurer mon ObjectFactory fournir un argument pour le premier constructeur, mais il semble que cela veut essayer le second.

Comment puis-je configurer mon ObjectFactory afin que je puisse choisir le premier constructeur ou peut-être même un autre si je décide de l'utiliser?

Répondre

3

Dans votre registre, vous pouvez le faire comme ceci:

SelectConstructor<SessionSource>(()=> new SessionSource((FluentConfiguration)null)); 
For<SessionSource>().Use<SessionSource>();