zl程序教程

您现在的位置是:首页 >  后端

当前栏目

c# 万能模型类型转换

c# 模型 类型转换 万能
2023-09-11 14:14:50 时间

调用

//获取一条User数据
UserModel model=GetUser();

//把UserModel类型转换成UserInfoModel类型
var userInfoModel = ModelTypeConvert.Convert<UserModel, UserInfoModel>(model);

核心代码 

    /// <summary>
    /// 模型类型转换
    /// </summary>
    public class ModelTypeConvert
    {
        /// <summary>
        /// 模型类型转换,OutT的属性必须和InT的属性类型和属性名称一致
        /// </summary>
        /// <typeparam name="InT">进入的类型</typeparam>
        /// <typeparam name="OutT">转换后的类型</typeparam>
        /// <param name="inT">进入的类型</param> 
        /// <returns></returns>
        public static OutT Convert<InT, OutT>(InT inT)
        {
            Type InType = typeof(InT);
            InT inTModel = inT;

            Type OutType = typeof(OutT);
            OutT outTModel = (OutT)Activator.CreateInstance(OutType);

            //通过反射去遍历属性
            foreach (PropertyInfo inProperty in InType.GetProperties())
            {
                foreach (PropertyInfo OutProperty in OutType.GetProperties())
                {
                    if (inProperty.Name== OutProperty.Name && inProperty.PropertyType == OutProperty.PropertyType)
                    {
                        OutProperty.SetValue(outTModel, inProperty.GetValue(inTModel));
                    }
                }
            }

                return outTModel;
        }
    }