加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

利用反射实现两个对象赋值

发布时间:2020-12-17 00:56:54 所属栏目:安全 来源:网络整理
导读:利用反射实现对象转字符串 private string SpellEntityT(T entity) { string result = ""; Type Keytype = typeof(T); PropertyInfo[] piKey = Keytype.GetProperties();//获取属性集合 foreach (PropertyInfo p in piKey) { result += p.Name + ":" + p.Get
利用反射实现对象转字符串
private string SpellEntity<T>(T entity)
        {
            string result = "";
            Type Keytype = typeof(T);
            PropertyInfo[] piKey = Keytype.GetProperties();//获取属性集合
            foreach (PropertyInfo p in piKey)
            {
                result += p.Name + ":" + p.GetValue(entity,null) + ",";
            }
            return result.Trim(',');
        }


在通过webservice或者wcf应用中经常会用到实体间转换的问题,当字段很多时进行赋值很麻烦,通过反射可以实现快速自动化赋值:

?学生实体类:

public class Student
    {
        public string Name { set; get; }
        public string Sex { set; get; }
        public int Age { set; get; }
    }


老师实体类:

public class Teacher
    {
        public string Name { set; get; }
        public string Sex { set; get; }
        public int Age { set; get; }
    }


简单实现:

Student student = new Student();
            student.Name = "EP";
            student.Sex = "Male";
            student.Age = 30;

            Teacher teacher = new Teacher();

            Type t = typeof(Student);
            PropertyInfo[] pi = t.GetProperties();
            Console.WriteLine(typeof(Student));
            foreach (PropertyInfo p in pi)
            {

                Console.WriteLine(p.Name + "--" + p.PropertyType + "--" + p.GetValue(student,null));
                PropertyInfo pii = (typeof(Teacher)).GetProperty(p.Name);
                pii.SetValue(teacher,p.GetValue(student,null),null);
            }
            Console.ReadLine();

            t = typeof(Teacher);
            pi = t.GetProperties();
            Console.WriteLine(typeof(Teacher));
            foreach (PropertyInfo p in pi)
            {
                Console.WriteLine(p.Name + "--" + p.PropertyType + "--" + p.GetValue(teacher,null));
            }
            Console.ReadLine();

此方法可以写成一个通用类,利用泛型操作实现不同实体转换。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读