gpt4 book ai didi

c# - 使用 AutoMapper 的 IMappingEngine 和 DI 有什么好处(如果有的话)

转载 作者:太空狗 更新时间:2023-10-30 01:19:55 26 4
gpt4 key购买 nike

我对 AutoMapper 比较陌生(但已经很喜欢它了)并且一直在使用 Mapper.CreateMap<T,T>() 声明我的映射配置文件通过 Global.asax.cs 中调用的静态方法.

然而,在阅读了更多有关 AutoMapper 的信息后,我还注意到了注入(inject) IMapperEngine 的选项。使用 IoC 容器(在我的例子中是 StructureMap)和 DI 的接口(interface),让我想知道这会给我带来什么(如果有的话)额外的好处除了那些在使用依赖注入(inject)时获得的好处(模拟,控制反转等)。

例如,使用 IMapperEngine 是否会延迟配置文件的加载,直到它们被使用,或者我是否完全偏离了目标?

最佳答案

I'm relatively new to AutoMapper (but love it already) and have been declaring my mapping profiles by using Mapper.Map via a static method called in Global.asax.cs.

我希望你没有那样做。 Mapper.Map 方法用于执行对象实例之间的实际映射。您应该在 Global.asax.cs 中做的是使用 Mapper.CreateMap 静态方法定义您的映射。

现在就您关于 IMapperEngine 接口(interface)的问题而言,始终在代码中使用抽象是一种很好的做法。在您的 Controller 操作中,您将不再硬编码对 Mapper.Map 的静态方法调用,而是使用您可以在单元测试中模拟的抽象。没有其他明显的好处。

使用此接口(interface)不会延迟任何事情。如果您注入(inject)了具体的 Mapper.Engine 实例,那么您在调用 IMapperEngine.Map 方法时所做的就是调用底层的 Mapper.Engine.Map 方法。

关于c# - 使用 AutoMapper 的 IMappingEngine 和 DI 有什么好处(如果有的话),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com