【发布时间】:2021-05-25 14:21:28
【问题描述】:
我有一个带有以下 Nuget 包的 .NET Core 3.1 API:
- AutoMapper (10.1.1)
- AutoMapper.Extensions.Microsoft.DependencyInjection (8.1.1)
我正在尝试使用 ValueResolver 将值从实体映射到 dto,但出现异常:
AutoMapperMappingException:无法创建 TestAutomapperResolver.Mapping.CustomResolver 类型的实例
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddAutoMapper(cfg => cfg.AddMaps(typeof(TestProfile).Assembly));
}
TestProfile.cs
public class TestProfile : Profile
{
public TestProfile()
{
CreateMap<TestEntity, TestDto>()
.ForMember(src => src.PropertyToBeMappedByResolver, opts => opts.MapFrom<CustomResolver>());
}
}
public class CustomResolver : IValueResolver<TestEntity, TestDto, string>
{
public string Resolve(TestEntity source, TestDto destination, string destMember, ResolutionContext context)
{
return "String generated with resolver";
}
}
在执行mapper.CreateMap<TestDto>(entity); 时,我收到了该异常。
顺便说一句,将这个解析器用作opts => opts.MapFrom(CustomResolver()) 不是一个选项,因为我想将一些服务注入到那个解析器中。
有什么想法吗?
【问题讨论】:
-
@LucianBargaoanu 我显然读过这个。我错过了什么?
-
不,我不认为你缺少任何东西。真的感觉这应该有效,我不知道为什么。我把你的代码记下来了,可以确认错误。
-
显然您的代码与文档中的示例完全不同,所以如果您阅读了该页面,您是如何编写该代码的?为什么? :)
-
@LucianBargaoanu 哪一部分不是那样的?你克隆了我的仓库吗?
标签: c# .net-core automapper