AutoMapper - 映射源对象中不存在的目标对象 属性
AutoMapper - Map destination object's property that does not exist in source object
我正在将 class 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
。
如果你想 return 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();
}
}
}
我正在将 class 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
。
如果你想 return 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();
}
}
}