2

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

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

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

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

4

1 回答 1

3
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),它允许您以流畅的方式配置实例。

于 2008-10-04T14:37:45.403 回答