gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:37:21 24 4
gpt4 key购买 nike

我正在尝试使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com