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

时间:2008-09-27 19:24:03

标签: c# .net structuremap

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

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

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

同样,使用AddInstanceOf和ForRequestedType之间的区别是什么?

1 个答案:

答案 0 :(得分:3)

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

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

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

这类似于AddConcreteType,但它也使类型成为默认类型。如果对IConsumer的请求没有指定具体的密钥,则这是将返回的类型。

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