假设我有一个名为的接口IConvertableModel
,它可以帮助我将一些 MVC 模型转换为 DTO 对象/从 DTO 对象转换,如下所示:
public class DisplayEditModel : IConvertableModel<Display>
{
[HiddenInput(DisplayValue = false)]
public int ObjectId { get; set; }
[StringLength(255)]
public string Description { get; set; }
public Display ToDto()
{
return new Display
{
Description = Description,
ObjectId = ObjectId,
};
}
public void SetFromDto(Display dto)
{
Description = dto.Description;
ObjectId = dto.ObjectId;
}
}
但是这种方法有一个问题,那就是它不允许我这样做:
var dto = _dtoRepository.GetFirstDto();
return new DisplayEditModel().SetFromDto(dto);
相反,我应该执行以下操作:
var dto = _dtoRepository.GetFirstDto();
var model = new DisplayEditModel();
model.SetFromDto(dto);
return model;
从长远来看,这会增加额外的两行代码和一点点复杂性。
我在想的是把SetFromDto
方法转换成这样的东西:
public DisplayEditModel SetFromDto(Display dto)
{
Description = dto.Description;
ObjectId = dto.ObjectId;
return this;
}
我认为这段代码的好处是显而易见的,但我也想了解这是否会损害代码的可读性并从长远来看会给开发人员带来意想不到的结果,如果你还有其他想法,你会推荐什么。
注意:由于接口的原因,我不打算实现构造方法。