在StructureMap中使用依赖注入时,如何在多个构造函数中进行选择?

时间:2010-04-25 17:45:25

标签: fluent-nhibernate dependency-injection structuremap ioc-container

我正在尝试使用structuremap为我的一些intregration测试构建Fluent Nhibernate的SessionSource对象。唯一的问题是Fluent的ISessionSourceSessionSource)的具体实现有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以便我可以选择第一个构造函数,或者如果我决定使用它,可能会选择另一个构造函数?

1 个答案:

答案 0 :(得分:3)

在您的注册表中,您可以这样做:

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