用于.NET的基于约定的基于对象的对象映射器和转换器
使用 C# 在 .NET Core 3 中的静态类中使用 AutoMapper
我面临的情况是,我正在从扩展方法类中的某个层转移一些逻辑。问题是我想在具有扩展方法的静态类中使用自动映射器。该项目是
我有一个 ViewModel,它获取一些模型数据并稍微改变它。 我这样做的方式“有效”,因为我只是将 DomainModel 传递给 ViewModel 的构造函数,但因为我使用的是
我有两节课,我想做Dto。在存储库中,我使用了 GroupBy,并且在 dto 中有列表。我需要映射这个 公共类FactoryDto { 公共 int Id { 得到;放; } 公共字符串?名字...
我想在映射深层(即级别> 1)对象模型时忽略某些属性。 以下测试工作正常: 类 Foo { 公共字符串文本{获取;放; } } 类酒吧 { 公开
如何将视图模型映射到此类对象的实体? 我有一个像这样的实体词 公共类单词:BaseEntity { 公共字符串?名称{获取;放; } 公共字符串?德菲...
如果对象属性存在,为什么 AutoMapper 验证不起作用?
如果我调用 AutoMapper 的 AssertConfigurationIsValid() 函数,它应该为映射类的每个属性抛出异常,该类使用未映射的类型。看来这不...
如何通过 AutoMapping 到 Dto 高效地进行具有多个导航/级别的 EFCore 7 查询?
我第一次在 Asp.net WebAPI 中的端点上下文中使用 EFCore。 我有一张场地表,我正在尝试: 查询他们 通过 AutoMapper 将它们传送到 Dto/公共 mo...
System.InvalidOperationException 无法解析类型的服务
System.InvalidOperationException:尝试激活“HungerZone.Services.ProductAPI.Controllers”时无法解析类型“HungerZone.Services.ProductAPI.Models.DTO.ResponseDto”的服务。
我正在尝试映射两个不同的对象。 不使用 ResolveUsing 的建议? 如何正确地将字符串映射到对象? cfg.CreateMap() .佛...
此代码是自定义可查询映射扩展吗?如果这是以另一种方式执行相同代码的现代方法?
据我对这段代码的理解,它从 IQueryable 到 Generic 的映射() 并且需要知道是否有更简单的方法来做到这一点。 这段代码的设置是 创建静态类名“
公共语言运行时从 .net 应用程序 4.8 调用自动映射器函数时检测到无效程序
该项目有.net Framework 4.8和automapper 7.0.1包。 错误信息如下,System.InvalidProgramException,HResult=0x8013153A,Message=Common Language Runtime检测到一个inv...
Azure DevOps 管道在 .net 6 中恢复 AutoMapper NuGet 包时出现问题
我的管道运行时收到以下错误消息: 包 AutoMapper.Extensions.Microsoft.DependencyInjection 8.1.1 与 net60 (.NETFramework,Version=v6.0) 不兼容。套餐
如何让 Auto Mapper 使用继承列表类中所有内容的自定义列表
我将此设置为映射配置文件 创建地图(); 这个映射有效 StuffDto stuffDto = _mapper.Map(Stuff); 这个映射也有效 列表 我将此设置为映射配置文件 CreateMap<Stuff, StuffDto>(); 这个映射有效 StuffDto stuffDto = _mapper.Map<Stuff, StuffDto>(Stuff); 这个映射也有效 List<StuffDto> stuffDtoList = _mapper.Map<List<Stuff>, List<StuffDto>>(Stuff); 然而这个映射并不 PagesList<StuffDto> stuffDtoList = _mapper.Map<PagedList<Stuff>, PagesList<StuffDto>>(Stuff); 错误是:需要有一个带有 0 个参数或只有可选参数的构造函数。验证您的配置以获取详细信息。 PageList 看起来像 public class PagedList<T> : List<T> { public PagedList(IEnumerable<T> items, int count, int pageNumber, int pageSize) { CurrentPage = pageNumber; TotalPages = (int)Math.Ceiling(count / (double)pageSize); PageSize = pageSize; TotalCount = count; AddRange(items); } public int CurrentPage { get; set; } public int TotalPages { get; set; } public int PageSize { get; set; } public int TotalCount { get; set; } public static async Task<PagedList<T>> CreateAsync(IQueryable<T> source, int pageNumber, int pageSize) { // get the count of items EX 200 total events var count = await source.CountAsync(); var items = await source.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToListAsync(); return new PagedList<T>(items, count, pageNumber, pageSize); } } 我需要做什么才能像 List 那样工作/解决? _mapper.Map<PagedList<Stuff>, PagesList<StuffDto>>(Stuff);
我有两个班级: 公共类数据 { 公共字符串? Property1 { 得到;放; } 公共字符串? Property2 { 得到;放; } public int 数量 { get;放; } = 1; } 公开课 DataQuant...
如何使用 Automapper 将 ViewModel 中的 List<string> 映射到另一个实体中的字符串?
我有 4 个实体: 公开课游戏 { 公共 int Id { 得到;放; } 公共字符串游戏名称 { 得到;放; } public int DeveloperStudioId { 得到;放; } 公开
AutoMapper for JSON keys with same name as Model Fields
我有这个 AutoMapperProfile: 公共 AutoMapperJSON() { 创建地图() .ForMember(dest => dest.name, opt => opt.MapFrom(src => src.SelectTok...
我正在尝试在 C# 和 dotNET 中使用 AutoMapper,将实体转换为 DTO,反之亦然,但我不断收到相同的错误“未找到或不支持地图”。 所以我有实体,还有 DTO tha...
AutoMapper - 如何添加自定义 IObjectMapper
我想实现这里描述的东西 https://stackoverflow.com/a/34956681/6051621 https://dotnetfiddle.net/vWmRiY。 这个想法是打开一个 Wrapper。由于映射 Wrapper 我想实现这里描述的东西https://stackoverflow.com/a/34956681/6051621https://dotnetfiddle.net/vWmRiY. 想法是打开一个Wrapper<T>。由于开箱即用似乎不支持将 Wrapper<T> 映射到 T,因此可能的解决方案之一是注册自定义 IObjectMapper。 问题是 MapperRegistry 现在是内部的https://github.com/AutoMapper/AutoMapper/blob/master/src/AutoMapper/Mappers/MapperRegistry.cs#LL3C29-L3C31。 那么我该如何实现呢?我有更好的选择吗? 谢谢 最简单的方法是定义转换运算符: public class MyGenericWrapper<T> { public T Value {get; set;} public static explicit operator MyGenericWrapper<T>(T p) => new MyGenericWrapper<T> { Value = p }; public static explicit operator T(MyGenericWrapper<T> p) => p.Value; } 但如果你不想,那么你可以尝试以下操作: var config = new MapperConfiguration(cfg => { cfg.Internal().Mappers.Add(new SourceWrapperMapper()); cfg.Internal().Mappers.Add(new DestinationWrapperMapper()); cfg.CreateMap<Dto, Entity>(); cfg.CreateMap<Entity, Dto>(); }); var mapper = config.CreateMapper(); var entity = mapper.Map<Entity>(new Dto { SomeValue = new MyGenericWrapper<int>{Value = 42} }); var dto = mapper.Map<Dto>(entity); 让您入门的示例映射器: public class SourceWrapperMapper : IObjectMapper { public bool IsMatch(TypePair context) => IsWrappedValue(context.SourceType); public Expression MapExpression(IGlobalConfiguration configuration, ProfileMap profileMap, MemberMap memberMap, Expression sourceExpression, Expression destExpression) => Expression.PropertyOrField(sourceExpression, nameof(MyGenericWrapper<int>.Value)); private static bool IsWrappedValue(Type type) { return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(MyGenericWrapper<>); } } public class DestinationWrapperMapper : IObjectMapper { public bool IsMatch(TypePair context) => IsWrappedValue(context.DestinationType); public Expression MapExpression(IGlobalConfiguration configuration, ProfileMap profileMap, MemberMap memberMap, Expression sourceExpression, Expression destExpression) { var wrappedType = memberMap.DestinationType.GenericTypeArguments.First(); return Expression.Call(Mi.MakeGenericMethod(wrappedType), configuration.MapExpression(profileMap, new TypePair(memberMap.SourceType, wrappedType), sourceExpression, memberMap)); } public static MyGenericWrapper<T> Wrap<T>(T p) => new MyGenericWrapper<T> { Value = p }; private static MethodInfo Mi = typeof(DestinationWrapperMapper).GetMethod(nameof(Wrap), BindingFlags.Public | BindingFlags.Static); private static bool IsWrappedValue(Type type) { return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(MyGenericWrapper<>); } }
想获取枚举的名称。我只得到 0 和 1。如何使用 Automapper 转换映射。任何人都为此建议解决方案。我的代码如下:- 公开课作业 { 公开
如果 src.memberBalance 为空,我修改了下面的代码以返回 0,但是,如果 src.memberBalance 为负,它仍然映射到 0 而不是负值。我确定这是...