繁体   English   中英

StructureMap 中的 AddConcreteType 和 TheDefaultIsConcreteType 有什么区别?

[英]What's the difference between AddConcreteType and TheDefaultIsConcreteType in StructureMap?

我正在设置 StructureMap,似乎我想做的所有事情都有两种方法可以做到,我不清楚它们之间有什么区别。 例如,这两行之间的区别是什么:

StructureMapConfiguration.ForRequestedType<IConsumer>().AddConcreteType<Consumer>();

StructureMapConfiguration.ForRequestedType<IConsumer>().TheDefaultIsConcreteType<Consumer>();

同样,使用 AddInstanceOf 和 ForRequestedType 有什么区别?

StructureMapConfiguration.ForRequestedType<IConsumer>().AddConcreteType<Consumer>();

此方法会将 Consumer 类型添加为 IConsumer 的插入类型。 如果 IConsumer 没有其他插入类型,则此类型将是默认类型,返回一个 IConsumer 实例被请求。 否则,您将需要使用具体键(默认情况下是该类型的程序集限定名称)来获取此实例。

StructureMapConfiguration.ForRequestedType<IConsumer>().TheDefaultIsConcreteType<Consumer>();

这与 AddConcreteType 的工作方式类似,不同之处在于它还使类型成为默认类型。 如果对 IConsumer 的请求没有指定具体的键,这就是将返回的类型。

至于 AddInstanceOf 和 ForRequestedType 之间的区别,AddInstance of 允许您提供一个委托来处理创建指定类型的实例。 ForRequestedType 为您提供了一个 CreatePluginFamilyExpression 实例(在 ForRequestedType(Type t) 的情况下为 GenericFamilyExpression),它允许您以流畅的方式配置实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM