StructureMap添加多个实例不起作用

时间:2012-10-16 12:33:32

标签: c# .net structuremap

我正在尝试使用StructureMap, NHibernate and multiple databases作为我设计的来源,添加一个类型的多个实例来构建地图

以下是我在注册表中添加它们的方法:

foreach (ConnectionStringSettings location in ConfigurationManager.ConnectionStrings)
        {
            For<INHibernateSessionFactory>()
                .Add(x => new NHibernateSessionFactory(location.Name, GetSessionFactory(location.ConnectionString)));
        }

然后在我的AppSessionFactory中:

 public AppSessionFactory(IEnumerable<NHibernateSessionFactory> factories)
    {
        _factories = new List<INHibernateSessionFactory>(factories);
    }

无论是那还是这项工作:

_factories = ObjectFactory.GetAllInstances<INHibernateSessionFactory>().ToList();

两个调用都返回两个相同的对象,相同的位置和相同的SessionFactory。

1 个答案:

答案 0 :(得分:0)

我不完全确定,但这可能与您访问修改后的闭包的方式有关。

我会尝试创建变量的本地范围副本,如下所示:

foreach (ConnectionStringSettings location in ConfigurationManager.ConnectionStrings)
{
    ConnectionStringSettings localLocation = location;
    For<INHibernateSessionFactory>()
        .Add(x => new NHibernateSessionFactory(localLocation.Name, GetSessionFactory(localLocation.ConnectionString)));
}