我有一个ASP.NET MVC 5应用程序,我使用Structuremap 3作为IOC。Structuremap 3单接口多种类型
我有一个通过N层使用多种类型的接口,我无法找到如何将多种类型映射到自动构造函数注入的相同接口的简洁说明。
比如我在注册表中的以下声明
For<IDataContextAsync>().Use<DbGeoContext>();
For<IDataContextAsync>().Use<DbEspContext>();
当我跑我的应用我理解IDataContextAsync的最后添加的实例将使用的默认实例时,我的应用程序创建一个类的实例需要一个IDataContextAsync作为构造函数中的参数。
所以我的问题是我如何告诉Structuremap 3在注册表中使用与正在创建的类型相关的IDataContextAsync的特定实例?
谢谢。
嗨,谢谢你的回复,最终我发现了它,但是我花了一段时间。我会标记你的答案,但我还没有足够的分数。 – Csharper
其实我在应用程序启动时发现了一个问题,我检索EspContext的实例并更新它的连接字符串,但是当我将请求追踪到存储库层时,连接字符串没有改变?嗯...是否有另一种方法比GetInstance将做同样的事情,但没有创建一个实例? – Csharper
从一开始就将连接字符串设置为正确的值不是更容易吗?如果直到应用程序生命周期中的某个特定时间点才知道该值,请使用工厂模式并注入一个可生成连接的工厂,而不是注入实际连接。我认为你的问题是,它与你更改的版本库不同。您可以为结构图中的每种类型设置[生命周期](http://structuremap.github.io/object-lifecycle/supported-lifecycles/)。默认值为transient(每个对象图的新对象)。 – PHeiberg