我是结构图的新手但我想在我的asp.net网站中使用它来进行依赖注入 任何人都可以建议我使用结构图进行依赖注入的简单例子
答案 0 :(得分:2)
你需要做这样的事情: -
StructureMapConfiguration
.ForRequestedType<IResourceA>()
.TheDefaultIsConcreteType<ResourceB>()
.CacheBy(InstanceScope.Singleton);
这告诉StructureMap在有ResourceA请求时注入ResourceB。
答案 1 :(得分:1)
您可以以编程方式或通过配置文件进行配置。
Programatical示例(还有其他方法):
StructureMap.StructureMapConfiguration.ForRequestedType<ISomething>().TheDefaultIsConcreteType<ConcreteSomething>();
然后您可以使用以下代码获取已配置类型的实例:
//The concrete type will be ConcreteSomething
ISomething instance = ObjectFactory.GetInstance<ISomething>();
您可以在配置文件中执行此操作:
<StructureMap MementoStyle="Attribute">
<DefaultInstance PluginType="Blah.ISomething, Blah.SomethingDLL" PluggedType="Blah.Concrete.ConcreteSomething,Blah.ConcreteDLL"/>
</StructureMap>
在main方法或Global.asax中,您可以通过以下方式设置此配置:
StructureMap.ObjectFactory.Initialize(x => { x.PullConfigurationFromAppConfig = true; });
并以与上述相同的方式使用它:
ISomething instance = ObjectFactory.GetInstance<ISomething>();
如果具体类具有需要在其中注入实例的构造函数,并且您已经配置了这些实例,那么具体类型将由框架注入。
有一些方法可以将参数传递给构造函数,处理Gereric类型,创建使用特定构造函数/属性值配置的命名实例。我使用这个框架并非常喜欢它。