c# - StructureMap 添加多个实例不工作

标签 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。

最佳答案

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

我会尝试像这样创建一个局部作用域的变量副本:

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

关于c# - StructureMap 添加多个实例不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914820/

相关文章:

c# - 如何在c#中捕获准确的执行时间

c# - structuremap怎么装饰?

c# - 使用 IContainers 比直接使用 ObjectFactory (结构图)更好吗?

c# - NuGet 包应支持哪些 .NET 版本以最大限度地提高其可用性和功能?

c# - 未找到结果时的错误页面

c# - .net Core EF - 按字符串名称或类型动态添加到 DbSet

visual-studio - 为什么在运行我的应用程序时会遗漏一些引用?

c# - 如何在 C# 中使用 XPath 将 XML 解析为 IList<BusinessObject>?

c# - 使用 knockout.js 渲染部分 View

c# - 在 C# 中的服务器上创建 COM 对象