1.实现目的:
DTO(数据传输对象)封装的数据面向表现层(UI),Model封装的数据面向业务逻辑层(service),在业务逻辑层对每个对象都要用ToDTO()方法,代码冗余,考虑将ToDTO()方法进行封装,将Model和DTO传入实现自动属性赋值。
2.运用技术点:
封装、反射操作属性、泛型方法
3.实现代码:
public class ToDTO
{
public M ToDTOs<T,M>(T model,M dto)
{
Type typeModel = typeof(T);
Type typeDTO = typeof(M);
object DTO = Activator.CreateInstance(typeDTO);
foreach (var prop in typeDTO.GetProperties())
{
object value = typeModel.GetProperty(prop.Name).GetValue(model);
prop.SetValue(DTO, value);
}
return dto;
}
}