我正在设置 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/