【发布时间】:2019-09-27 07:04:23
【问题描述】:
我有以下代码将自动映射器添加到我的应用程序中。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddHttpClient();
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
}
AppDomain.CurrentDomain.GetAssemblies() 仅返回在调用它时加载的程序集。
我可以看到我的一些包含我的映射的程序集尚未加载,因此未加载映射,这会返回有关缺少映射类型的错误。
如何获取项目引用的所有程序集?
【问题讨论】:
-
为什么需要传递参数 services.AddAutoMapper 方法。您可以像 services.AddAutoMapper() 一样直接调用它。它对我来说很好。此外,您是否创建了继承自 Profile 的 Automapper Profile 类?
-
是的,我已经创建了配置文件。 AddAutoMapper() 被标记为过时
-
“
AppDomain.CurrentDomain.GetAssemblies()仅返回在调用它时加载的程序集” – 所以它是按设计工作的。如果您想要其他程序集,则直接传递这些程序集。 -
这就是 no params 重载已过时的确切原因 :) 您可以显式传递程序集,或编写代码自行加载它们。
-
应用程序启动期间没有加载哪个程序集?是否有任何演示可以重现您的问题?
标签: c# asp.net-core .net-core automapper