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;
}
}