.Net 两个对像之间的映射 (一 )
2024-09-29 07:13:24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Net;
using System.Reflection; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
UserModel u = new UserModel(); u.UserName = "jinshuai";
u.Age = ; IdentityModel im = new IdentityModel(); im= ConvertType<PropertyMapAttribute,IdentityModel,UserModel>(u,im); Console.WriteLine(im.userName); Console.WriteLine(im.age); Console.Read(); } static T2 ConvertType<T1,T2,T3>(T3 SourceObj,T2 DestObj)
{
Type imt = DestObj.GetType();
Type ut = SourceObj.GetType(); PropertyInfo[] Parray = imt.GetProperties(); PropertyInfo[] UParray = ut.GetProperties(); foreach (PropertyInfo p in Parray)
{
PropertyInfo propert = imt.GetProperty(p.Name); object[] atarray = p.GetCustomAttributes(typeof(T1), true); var data = atarray.FirstOrDefault(); dynamic a = (T1)data; if (a != null)
{
foreach (PropertyInfo Up in UParray)
{
if (a.DestName == propert.Name && Up.Name == a.SourceName)
{
propert.SetValue(DestObj, Up.GetValue(SourceObj, null), null);
}
}
}
} return DestObj; }
} public class UserModel { public string UserName { get; set; }
public int Age { get; set; } } public class IdentityModel
{
[PropertyMapAttribute(SourceName = "UserName", DestName = "userName")]
public string userName { get; set; } [PropertyMapAttribute(SourceName = "Age", DestName = "age")]
public int age { get; set; } } [AttributeUsage( AttributeTargets.Property )]
public class PropertyMapAttribute:Attribute
{
public string SourceName { get; set; }
public string DestName { get; set; } }
}
本代码只提供一种思路........
具体可能还有其它方法......
最新文章
- Linux(centeros)安装weblogic10.3.6教程
- sbrk与brk的使用小例子
- div中嵌套div水平垂直居中
- Apache Thrift入门(安装、测试与java程序编写)
- C#实现微信开发
- ES5 forEach()用法和提前终止遍历
- HashMap 底层算法分析
- Java学习笔记-嵌套类
- ViewpageMaiActity
- <;ROS>; 通讯方式之 Action
- c#实战开发:以太坊钱包对接私链 (二)
- MFC中添加了一个dialog,并创建了相应的类,初始化函数没有怎么办?
- docker的容器和镜像的差别
- Linux VMware安装VMTools工具
- kvm虚拟化二: 字符界面管理及 无人值守安装
- poj3321-Apple Tree(DFS序+树状数组)
- Hbase和Hive的异同
- ubuntu安装TexturePicker
- Java 线程池submit和execute
- ES6,先知道这些必会的才行