Asp.net mvc 2 StructureMap注入式IContainer-它来自哪里?
我有一个ASP.NETMVC应用程序,我正在MVC中使用StructureMap将整个应用程序粘合在一起。有些模型类具有重量级依赖项,但这些依赖项并没有在所有公共方法中使用,因此我将IContainer传递给模型构造函数,并使用它根据需要创建重量级依赖项Asp.net mvc 2 StructureMap注入式IContainer-它来自哪里?,asp.net-mvc-2,structuremap,Asp.net Mvc 2,Structuremap,我有一个ASP.NETMVC应用程序,我正在MVC中使用StructureMap将整个应用程序粘合在一起。有些模型类具有重量级依赖项,但这些依赖项并没有在所有公共方法中使用,因此我将IContainer传递给模型构造函数,并使用它根据需要创建重量级依赖项 我的问题是,注射的IContainer来自哪里?它是一个由MVC(它的逻辑父级)集中持有的引用,还是一个专门为这个类创建和配置的全新引用 注入到具有IContainer参数的构造函数中的容器与使用该构造函数创建类实例的容器相同 杰里米·米勒(J
我的问题是,注射的IContainer来自哪里?它是一个由MVC(它的逻辑父级)集中持有的引用,还是一个专门为这个类创建和配置的全新引用 注入到具有IContainer参数的构造函数中的容器与使用该构造函数创建类实例的容器相同 杰里米·米勒(Jeremy Miller)在他的著作中将这种行为表述为“默认情况下,IContainer被注入自身” 在需要时,您不能使用工厂模型来创建这些依赖项,以减少与容器的耦合吗 您可以使您的模型采用Func作为参数,并使用SM的自动注入功能:
public class MyModel
{
Func<IHeavyDep> _heavyFactory;
public MyModel(Func<IHeavyDep> dependency)
{
_heavyFactory = dependency;
}
public void UsesHeavy()
{
var heavy = _heavyFactory();
heavy.DoMyStuff();
}
}
公共类MyModel
{
Func_重型工厂;
公共MyModel(函数依赖项)
{
_重工厂=依赖性;
}
公共用途
{
var heavy=_heavyFactory();
重的;
}
}