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

本文介绍了如何在Web服务或WCF应用中利用反射来自动化大量字段的赋值,以解决实体转换问题。提供了一个简单的示例,演示了从学生实体到老师实体的赋值过程,并提出该方法可以扩展为泛型通用类,以适应不同实体间的转换需求。
摘要由CSDN通过智能技术生成
利用反射实现对象转字符串
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();


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

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值