【发布时间】:2020-06-02 18:09:51
【问题描述】:
我在我的 asp.net 核心启动类中使用以下语法来配置自动映射器:
services.AddAutoMapper(c => c.AllowNullCollections = true, AppDomain.CurrentDomain.GetAssemblies());
我希望能够在启动时编译映射。
根据 Automapper 文档,我应该可以通过:
var configuration = new MapperConfiguration(cfg => {});
configuration.CompileMappings();
如何使用 AddServices 语法访问映射配置?
【问题讨论】:
-
你需要在启动代码的某处注入
IConfigurationProvider。 -
所以我可以通过注入来访问配置提供程序(它似乎是一个单例),我可以调用 CompileMappings(),但这似乎并没有编译使用的实例单例 Mapper 实例。第一次调用 Mapper.Map
(SrcInstance) 最多可能需要 8 秒。第二次,速度很快。当我注入 ConfigurationProvider 并调用 compile 时,编译需要几秒钟,但我第一次调用 Mapper.Map 仍然需要 8 秒。 -
这听起来很不对 :) 升级 DI 包并删除所有静态映射器的使用。
-
我正在运行最新版本的自动映射器,并且在我的代码库中没有映射器的静态实例。一切都通过 .net core DI 系统注入
-
那我不知道你说的是什么单例映射器实例。哪有这回事。无论如何,您可以轻松删除 DI 的东西并在没有它的情况下进行简单的测试。
标签: automapper