Почему AutoMapper отображает целочисленное поле на объект? - PullRequest
0 голосов
/ 28 октября 2018

Сегодня я столкнулся с проблемой, которую просто не могу понять.Automapper отображает целочисленное поле в поле объекта, но я не говорю ему сделать это.

Вот мои очень урезанные релевантные классы, которые воспроизводят проблему:

class Program
{
    static void Main(string[] args)
    {
        Mapper.Initialize(cfg => cfg.AddProfile<AutoMapperRepositoryProfile>());
        var combatant = new Infrastructure.PersistenceModels.Combatant()
        {
            Id = 2,
        };
        var mapped = Mapper.Map<Guy>(combatant);
        // Creates an object with
        // Id = 2
        // abilityStage = {
        //                   Id = 5,
        //                   Name = null
        //                }
    }
}

//Source
public class Combatant
{
    public int Id { get; set; }
    public int abilitystageId { get; set; } = 5;
}

//destination
public class Guy
{
    public int Id { get; set; }
    public AbilityStage abilityStage { get; set; }
}

//PersistenceModels (Source class)
public class AbilityStage
{
    public int Id { get; set; }
    public string Name { get; set; }
}

//Destination class
public class AbilityStage
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class AutoMapperRepositoryProfile : Profile
{
    public AutoMapperRepositoryProfile()
    {
        CreateMap<CombatArena.Core.Entities.AbilityStage, CombatArena.Infrastructure.PersistenceModels.AbilityStage>().ReverseMap();
        CreateMap<CombatArena.Core.Entities.Guy, CombatArena.Infrastructure.PersistenceModels.Combatant>().ReverseMap();
    }
}

Каким-то образом это создает объект, такой, что у "сопоставленного" есть Id 2, с "Способность", который имеет идентификатор 5 и нулевое имя.Я хочу, чтобы «сопоставленный» имел Id 5 и «ilityStage », который является нулевым.

Очень важно, что если я изменяю имя свойства Combatant "ablestageId" на что-то немного другое (a_abilityStageId ,ilityStageId_ и т. Д.), Я не наблюдаю такого поведения.Кажется, это связано с тем, что поле имеет то же имя, что и поле класса назначения, но с Id в конце.Я пытался воспроизвести это в новом проекте с нуля, и этого там не происходит, поэтому я просто в растерянности относительно того, что вызывает это.

Может кто-нибудь сказать мне, что может быть причиной этого, и еслиесть чистый способ отключить это поведение?

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