我有以下代码将自动映射器添加到我的应用中。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddHttpClient();
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
}
AppDomain.CurrentDomain.GetAssemblies()
仅返回在调用时已加载的程序集。
我可以看到某些包含我的映射的程序集尚未加载,结果未加载映射,这会向我返回有关缺少映射类型的错误。
如何获取我的项目引用的所有程序集?
答案 0 :(得分:1)
Reference - From official AutoMapper docs
ASP.NET Core
有一个NuGet package与here中所述的默认注入机制一起使用,并在this project中使用。
您使用profiles定义配置。然后你让 AutoMapper知道这些配置文件在哪些程序集中定义 在以下位置调用
IServiceCollection
扩展方法AddAutoMapper
启动:
services.AddAutoMapper(profileAssembly1, profileAssembly2 /*, ...*/);
或标记类型:
services.AddAutoMapper(typeof(ProfileTypeFromAssembly1), typeof(ProfileTypeFromAssembly2) /*, ...*/);
现在,您可以在运行时将AutoMapper注入服务/控制器:
public class EmployeesController {
private readonly IMapper _mapper;
public EmployeesController(IMapper mapper) => _mapper = mapper;
// use _mapper.Map or _mapper.ProjectTo
}