属性名称相同的类,进行相互转换的函数

本文介绍了如何通过序列化和反序列化方法将复杂类对象进行映射,包括实例化对象、获取属性类型、遍历属性并设置值等步骤,并以一个具体的例子演示了整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 public T ClassConvert<T>(object o)
            where T:new()
        {
            T t = new T();
            Type type = o.GetType();
            System.Reflection.PropertyInfo[] ps = type.GetProperties();
            foreach (PropertyInfo p in ps)
            {
                object pv = p.GetValue(o,null);
                Type type2 = t.GetType();

               PropertyInfo pr = type2.GetProperty(p.Name);
                if(pr!=null)
                {
                    pr.SetValue(t, pv, null);
                }
            }
            return t;
        }

 

对于复杂类,可以先序列后,改个类名,再反序列化来进行maping

 cy b = new cy();
            b.currency_ID = "33";
            b.currency_name = "44";
            b.currency_name_en = "55";
            b.rrrr = "ttt";
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            XmlSerializer xs = new XmlSerializer(typeof(cy));
            xs.Serialize(sw, b);
            sw.Close();
            string aaa = sb.ToString();
            aaa=aaa.Replace("<cy ","<cc ").Replace("</cy>","</cc>");
            xs = new XmlSerializer(typeof(cc));
            StringReader sr = new StringReader(aaa);
            cc ddd = (cc)xs.Deserialize(sr);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值