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

标签 c# .net 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 允许您提供一个委托(delegate)来处理创建指定类型的实例。 ForRequestedType 为您提供了一个 CreatePluginFamilyExpression 实例(或者在 ForRequestedType(Type t) 的情况下为 GenericFamilyExpression),它允许您以流畅的方式配置实例。

关于c# - StructureMap 中的 AddConcreteType 和 TheDefaultIsConcreteType 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/144272/

相关文章:

c# - 用 Structuremap 装饰通用接口(interface)

c# - 将两个值映射到一个对象

c# - 从 C++ Win32 调试托管组件

c# - 为什么这个绑定(bind)在 MVVM 中不起作用?

asp.net-mvc-3 - 如何实现ViewModel类的依赖注入(inject)?

c# - 如何配置结构图以提供具体类型的不同配置实例

c# - 在 C# 中,如何对客户端用户交互和 javascript (jQuery) 代码进行单元测试?

.net - 在事件目录中,mailNickname的作用是什么?

c# - HtmlAgilityPack 的 Html 节点问题

c# - 扩展可滚动控件的用户控件 - 禁用容器功能