Как при использовании внедрения зависимостей со StructureMap выбрать один из нескольких конструкторов?

Я пытаюсь получить карту структуры для создания объекта SessionSource Fluent Nhibernate для некоторых моих тестов интеграции. Единственная проблема заключается в том, что конкретная реализация Fluent ISessionSource (SessionSource) имеет 3 конструктора:

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

Я попытался настроить свой ObjectFactory, предоставляющий аргумент для первого конструктора, но похоже, что он хочет попробовать второй.

Как мне настроить мой ObjectFactory, чтобы я мог выбрать первый конструктор или, возможно, даже другой, если я решу его использовать?


person Mark Rogers    schedule 25.04.2010    source источник


Ответы (1)


В вашем реестре вы можете сделать это следующим образом:

SelectConstructor<SessionSource>(()=> new SessionSource((FluentConfiguration)null));
For<SessionSource>().Use<SessionSource>();
person miensol    schedule 25.04.2010