我正在将类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
。
答案 0 :(得分:0)
如果您想返回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();
}
}
}