/// <summary>
/// 方法目的:當(dāng)一個類(T)已經(jīng)有值镀层,但是這個時候需要對另一個類(Tn)賦值
/// 并且 兩個類存在相同字段名稱(最終目的把兩個類中相同字段直接賦值)蒂教;
/// 例:class MenuTB{ public string Name{get;set;}}? class ShowMenuModel{ public string Name{get;set;}}
/// 備注:下面例子Tn是繼承T后新的類返回值
/// T->MenuTB
?/// Tn->ShowMenuModel
// 調(diào)用方法:ShowMenuModel fmodel = ModelToModel<MenuTB, ShowMenuModel>(frow,new ShowMenuModel());
? ? ? ? /// </summary>
? ? ? ? /// <typeparam name="T">被繼承的類</typeparam>
? ? ? ? /// <typeparam name="Tn">繼承T后新的類</typeparam>
? ? ? ? /// <param name="objmodel">T類的參數(shù)值</param>
? ? ? ? /// <param name="nobjModel">Tn類一個空的實例化</param>
? ? ? ? /// <returns></returns>
? ? ? ? public Tn ModelToModel<T, Tn>(T objmodel, Tn nobjModel)
? ? ? ? {
? ? ? ? ? ? Tn Nobjmodel = nobjModel;
? ? ? ? ? ? //被繼承的類
? ? ? ? ? ? Type modelType = typeof(T);
? ? ? ? ? ? Type newModel = typeof(Tn);//繼承后的新類
? ? ? ? ? ? PropertyInfo[] newpropertys = modelType.GetProperties();//列舉出新的類中信息
? ? ? ? ? ? //循環(huán)新類的屬性
? ? ? ? ? ? foreach (PropertyInfo pi in newpropertys)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? string ParaName = pi.Name;//參數(shù)名稱
? ? ? ? ? ? ? ? string ParamType = pi.PropertyType.Name;//字段類型 int/DateTime/string 等等
? ? ? ? ? ? ? ? object vaule = modelType.GetProperty(ParaName).GetValue(objmodel, null);//從被繼承的類中根據(jù)相同字段名稱讀取類的值
? ? ? ? ? ? ? ? newModel.GetProperty(ParaName).SetValue(Nobjmodel, vaule, null);//給新版本的類參數(shù)賦值
? ? ? ? ? ? }
? ? ? ? ? ? return Nobjmodel;
? ? ? ? }