zoukankan      html  css  js  c++  java
  • 通过反射把一个类的属性的值赋值给另一个类

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

            /// <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);
  • 相关阅读:
    Merge k Sorted Lists
    N-Queens
    N-Queens II
    Reorder List
    使用AJAX实现文件上传时Illegal invocation错误
    php页面开启错误提示
    php分割最后一个逗号后面的字符
    微信卡券添加(微擎系统)
    php请求php
    Navicat MySQL连接Linux下MySQL的问题解决方案
  • 原文地址:https://www.cnblogs.com/xinbaba/p/6938338.html
Copyright © 2011-2022 走看看