AutoMapper 通过依赖注入识别前缀

AutoMapper recognize prefixes with dependency injection

我安装了 AutoMapper.Extensions.Microsoft.DependencyInjection nuget 包,我正在使用 .NET Core 3.1。根据文档 (https://docs.automapper.org/en/stable/Configuration.html),我应该能够为我的 属性 名称添加前缀。但是当我映射我的两个 classes 时,带有前缀的属性为空。我有一个抽象 class,其中有几个扩展到我的 UserDto 模型的属性,然后我将 UserDto 模型映射到我的没有抽象 class 的 UserEntity 模型。我的 UserEntity 模型为每个 属性 使用前缀 User,例如UserId、UserName,而我的 UserDto 只使用 Id、Name 等。我注册 AutoMapper 并添加我的配置如下:

        #region Auto Mapper
        services.AddAutoMapper(config =>
        {
            config.RecognizePrefixes(new[] { "User", "Role", "Language" });
            config.AddProfile(new DtoToEntityProfile());
            config.AddProfile(new ContractToDtoProfile());

        }, typeof(Startup));
        #endregion

我将我的配置文件添加到配置中以查看是否可行。在 Automapper 还可以通过扫描程序集自动找到我的配置文件之前。在不手动映射每个 属性 的情况下,我需要做什么才能将我的 Dto 映射到我的实体模型?

通过查看 Auto Mapper 配置文件 class 中的函数和属性,我发现有一个 RecognizePrefixes 和一个 RecognizeDestinationPrefixes 函数,RecognizePrefixes 函数仅从源中删除前缀,而 RecognizeDestinationPrefixes 函数仅删除前缀从目的地出发。

RecognizePrefixes 是一种具有误导性的名称。我通过如下实施我的配置解决了我的问题:

        #region Auto Mapper
        services.AddAutoMapper(config =>
        {
            config.RecognizeDestinationPrefixes(new[] { "User", "Role", "Domain", "Language" });
            config.RecognizePrefixes(new[] { "User", "Role", "Domain", "Language" });

        }, typeof(Startup));
        #endregion