StructureMap添加多个实例不起作用

3

我正在尝试使用StructureMap,NHibernate和多个数据库作为我的设计来源,将多个类型的实例添加到结构映射中。

以下是我在Registry中添加它们的方式:

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

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

我建议尝试创建一个本地作用域的变量副本,像这样:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接