AutoMapper - сопоставить свойство целевого объекта, которого нет в исходном объекте - PullRequest
0 голосов
/ 11 июля 2019

Я кастую класс Process в ProcessDTO.У объекта ProcessDTO есть свойство с именем ProcessSteps, которого нет в Process.Я хочу, чтобы свойство ProcessSteps было приведено к ProcessStepsDto.Я использую глобальную конфигурацию для AutoMapper.

Я пытался использовать

CreateMap<Process, ProcessDto>()
    .ForMember(dest=>dest.Steps, opt => opt.MapFrom(s => Mapper.Map<ProcessStepDto>(s)));

Но это неправильно ..


public class Process
{

}

public class ProcessDto
{
//This property does not exists in source object and get's created on get. I want this to be cast to "ProcessStepDto[]"
    public ProcessStep[] Steps
    {
        get
        {
            ProcessStepRepository repository = new ProcessStepRepository();
            return repository.Select(x => x.ProcessId == this.Id && x.Active).OrderBy(x=>x.Position).ToArray();
        }
    }
}

public class ProcessStep
{
 ...
}

public class ProcessStepDto
{
 ...
}

ОБНОВЛЕНИЕ После того как я использую AutoMapper для сопоставления моего объекта Process с ProcessDto, я также хочу, чтобы свойство Steps было сопоставлено с ProcessStepsDto.В настоящее время он остается как ProcessStep.enter image description here

1 Ответ

0 голосов
/ 18 июля 2019

Если вы хотите вернуть ProcessDto с ProcessStepDto[], ProcessDto должен определить свойство с типом ProcessStepDto[] вместо ProcessStep[].

    public class ProcessDto
    {
        public ProcessStepDto[] Steps
        {
            get
            {
                ProcessStepRepository repository = new ProcessStepRepository();                     

                return repository.Select(x => x.ProcessId == this.Id && x.Active).Select(s => new ProcessStepDto { PropertyInProcessStepDto = s.PropertyInProcessStep }).OrderBy(x=>x.Position).ToArray();
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...