C#
/// <summary> /// Model to Model /// </summary> /// <typeparam name="T">類</typeparam> /// <typeparam name="Tn">新的類</typeparam> /// <param name="objmodel">T類的參數值</param> /// <param name="nobjModel">Tn類一個空的實例化</param> /// <returns></returns> public static Tn ModelToModel<T, Tn>(T objmodel, Tn nobjModel) { Tn Nobjmodel = nobjModel; //被繼承的類 Type modelType = typeof(T); Type newModel = typeof(Tn);//繼承後的新類 PropertyInfo[] newpropertys = modelType.GetProperties();//列舉出新的類中信息 //循環新類的屬性 foreach (PropertyInfo pi in newpropertys) { string ParaName = pi.Name;//參數名稱 string ParamType = pi.PropertyType.Name;//字段類型 int/DateTime/string 等等 object vaule = modelType.GetProperty(ParaName).GetValue(objmodel, null);//從被繼承的類中根據相同字段名稱讀取類的值 if (vaule != null) { var property = newModel.GetProperty(ParaName); if(property!=null) property.SetValue(Nobjmodel, vaule, null);//給新版本的類參數賦值 } } return Nobjmodel; }