1)子对象赋值父对象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TravelPlanModel;
namespace LintwayModel.UnitModel
{
public class ClassModel : SYS_Class
{
public List<SYS_UserClass> TeacherList { get; set; }
public List<SYS_UserClass> StudentList { get; set; }
/// <summary>
/// 子对象赋值父亲对象
/// </summary>
/// <param name="child">子对象</param>
/// <returns>父对象</returns>
public static SYS_Class AutoCopy(ClassModel child)
{
SYS_Class parent = new SYS_Class();
var parentType = typeof(SYS_Class);
var properties = parentType.GetProperties();
foreach (var propertie in properties)
{
if (propertie.CanRead && propertie.CanWrite && propertie.Name != "Item")
{
propertie.SetValue(parent, propertie.GetValue(child, null), null);
}
}
return parent;
}
}
}
调用
//子对象赋值父对象
SYS_Class model = ClassModel.AutoCopy(entity);
2)父对象赋值子对象
/// <summary>
/// 父对象赋值子对象
/// </summary>
/// <typeparam name="TParent">父对象类型</typeparam>
/// <typeparam name="TChild">子对象类型</typeparam>
/// <param name="parent">父对象</param>
/// <returns>子对象</returns>
public static TChild AutoCopy<TParent, TChild>(TParent parent) where TChild : TParent, new()
{
TChild child = new TChild();
var ParentType = typeof(TParent);
var Properties = ParentType.GetProperties();
foreach (var Propertie in Properties)
{
//循环遍历属性
if (Propertie.CanRead && Propertie.CanWrite)
{
//进行属性拷贝
Propertie.SetValue(child, Propertie.GetValue(parent, null), null);
}
}
return child;
}
调用
//夫对象赋值子对象
classModel = PublicMethod.AutoCopy<SYS_Class, ClassModel>(item);