Model to Model

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章