2

我可以使用 Mapster.Tool 生成 Mappers 而不生成我要映射到的类吗?我有一个典型的域对象往返 DTO 场景,但这里的示例代码

https://github.com/MapsterMapper/Mapster/tree/master/src/Sample.CodeGen

和这里的文档

https://github.com/MapsterMapper/Mapster/wiki/Mapster.Tool

两者都专注于从域对象生成 DTO,通过使用属性注释它们或使用配置。有创建特定于 CRU 的 DTO 的配置,但我仍然宁愿创建自己的 DTO,但不必创建自己的映射。

4

1 回答 1

2

是的,您可以查看此处记录的基于接口的代码生成。

这允许您定义一个接口,该接口将基于现有类生成映射器。

从那里您可以选择如何使用生成的映射器。在服务中注册,然后使用 DI 作为一种方式。

这是一个简单的例子:

    [Mapper]
    public interface IContactMapper
    {
        ContactDetailVm MapTo(Contact contact);
    }

会导致

    public partial class ContactMapper : IContactMapper
    {
        public ContactDetailVm MapTo(Contact p2)
        {
            return p2 == null ? null : new ContactDetailVm()
            {
                Id = p2.Id,
                Created = p2.Created,
                LastUpdate = p2.LastUpdate,
                Title = p2.Title,
                FirstName = p2.FirstName,
                LastName = p2.LastName,
                PreferredName = p2.PreferredName,
                BirthYear = p2.BirthYear
            };
        }
    }

但是,我不相信您可以使用该工具为现有实体生成映射扩展方法。至少我不知道它可以在 v6 中完成。

于 2021-03-12T13:38:57.060 回答