我正在设置StructureMap,似乎我想要做的一切都有两种方法可以做到,我不清楚它们之间的区别。例如,这两行之间的区别是什么:
StructureMapConfiguration.ForRequestedType<IConsumer>().AddConcreteType<Consumer>();
StructureMapConfiguration.ForRequestedType<IConsumer>().TheDefaultIsConcreteType<Consumer>();
同样,使用AddInstanceOf和ForRequestedType之间的区别是什么?
答案 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),允许您以流畅的方式配置实例。