• 通过反射把一个类的属性的值赋值给另一个类


    两个类我就不创建了,具体实现方法如下:

            /// <summary>
            /// 通过反射把一个类的属性的值赋值给另一个类
            /// </summary>
            /// <typeparam name="D"></typeparam>
            /// <typeparam name="S"></typeparam>
            /// <param name="s"></param>
            /// <returns></returns>
            public static D Mapper<D, S>(S s)
            {
                D d = Activator.CreateInstance<D>();
                try
                {
                    var sType = s.GetType();
                    var dType = typeof(D);
                    foreach (PropertyInfo sP in sType.GetProperties())
                    {
                        foreach (PropertyInfo dP in dType.GetProperties())
                        {
                            if (dP.Name == sP.Name)
                            {
                                dP.SetValue(d, sP.GetValue(s));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                }
                return d;
            }

    其中D代表新类,S代表原来的类。

    首先实例化D类,sType代表获取S类的属性,dtype获取D类的属性,然后利用GetProperties()方法获取类别下的每一个属性,

    如果D类下的属性和S类下的属性相同,则把S类属性相对应的value值赋值给D类队形的属性。(利用Getvalues()获取),

    调用如下:

    Mapper<User, UserInfo>(UserInfo u);
  • 相关阅读:
    P1880 [NOI1995]石子合并
    LC 1388. Pizza With 3n Slices
    1129 Recommendation System
    1131 Subway Map
    C#中的lamda实用的select用法
    C# Image与Base64编码互转函数
    签名算法的URL
    xml格式封装数据
    layer 相关网址
    js-清空array数组
  • 原文地址:https://www.cnblogs.com/xinbaba/p/6938338.html
Copyright © 2020-2023  润新知