33 lines
1.5 KiB
C#
33 lines
1.5 KiB
C#
using AutoMapper;
|
|
using MessageService.Domain.KeyObjects;
|
|
using MessageService.WebApi.Application.Dtos;
|
|
|
|
namespace MessageService.WebApi.Application.Message
|
|
{
|
|
public class MessageMapperConfig : Profile
|
|
{
|
|
public MessageMapperConfig()
|
|
{
|
|
// 1. 配置 QuoteInfo -> QuoteInfoResponse
|
|
CreateMap<QuoteInfo, QuoteInfoResponse>();
|
|
|
|
// 2. 配置 MessageContent -> MessageContentResponse
|
|
CreateMap<MessageContent, MessageContentResponse>()
|
|
// 关键点:Body 是 object,由于我们在实体里写了 Body 计算属性
|
|
// AutoMapper 默认会识别到同名的 Body 属性并进行映射
|
|
// 如果你想显式指定逻辑,可以取消下面这行的注释:
|
|
// .ForMember(dest => dest.Body, opt => opt.MapFrom(src => src.Body))
|
|
.ForMember(dest => dest.Ext, opt => opt.MapFrom(src => src.Ext))
|
|
.ForMember(dest => dest.Quote, opt => opt.MapFrom(src =>
|
|
src.Quote.MessageId == Guid.Empty ? null : src.Quote));
|
|
|
|
// 3. 配置 Message -> MessageResponse
|
|
CreateMap<Domain.Entities.Message, MessageResponse>()
|
|
// 映射审计字段中的创建时间
|
|
.ForMember(dest => dest.CreationTime, opt => opt.MapFrom(src => src.CreationTime))
|
|
// 嵌套映射 Content
|
|
.ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content));
|
|
}
|
|
}
|
|
}
|