AutoMapper: значение пользователя в нижнем регистре от члена с таким же именем - PullRequest
0 голосов
/ 11 октября 2018

Я использую AutoMapper в своих проектах, и у меня есть 2 класса с одинаковыми именами членов.Я хочу, чтобы они отображались, но с другим регистром: если верхний, я хочу, чтобы у целевого объекта были только нижние регистры.

У меня есть это отображение

  Mapper.Initialize(cfg =>
            {                   

                cfg.CreateMap<CompanyFolder, CompanyFolderEntity>()                        
                    .ForMember(dest => dest.CompanyId, opt => opt.MapFrom(src => src.CompanyId.ToLowerInvariant()))
                    .ForMember(dest => dest.ApplicationId,
                        opt => opt.MapFrom(src => src.ApplicationId.ToLowerInvariant()));
            }
        );
    }

И затем у меня есть модульные тестычто не получилось:

[Fact]
public void CompanyFolderMapping_ShouldBe_Valid()
{
    var companyFolder1 = new CompanyFolder()
    {
        ApplicationId = "APPLICATION_ID_1",
        CompanyId = "COMPANY_ID_1"
    };

    var companyFolderInfoEntity1 = Mapper.Map<CompanyFolderEntity>(companyFolder1);
    Assert.NotNull(companyFolderInfoEntity1);
    Assert.Equal(companyFolderInfoEntity1.ApplicationId, companyFolder1.ApplicationId.ToLowerInvariant());
    Assert.Equal(companyFolderInfoEntity1.CompanyId, companyFolder1.CompanyId.ToLowerInvariant());
}

Я не понимаю, почему.Я полагаю, это можно исправить с помощью Resolver, но почему это не работает так?

1 Ответ

0 голосов
/ 11 октября 2018

Нашел проблему.Это классы, которые у меня есть:

 public class CompanyFolderEntity : TableEntity
    {
        public CompanyFolderEntity(string companyId, string applicationId, string folderPath)
        {
            ApplicationId = applicationId;
            CompanyId = companyId;
            FolderPath = folderPath;
        }

        public CompanyFolderEntity()
        {

        }    

        public string FolderPath { get; set; }

        public string ApplicationId { get; set; }    

        public string CompanyId { get; set; }
    }
}

А вот этот:

public class CompanyFolderInfo
{
    public string FolderPath { get; set; }

    public string ApplicationId { get; set; }

    public string CompanyId { get; set; }

}

Когда я комментирую первый конструктор и оставляю только конструктор по умолчанию, он работает нормально.Если я оставлю конструкторы и прокомментирую член FolderPath, он будет работать нормально.

Поскольку код приведен выше, он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...