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; } }
}

本代码只提供一种思路........

具体可能还有其它方法......

最新文章

  1. Linux(centeros)安装weblogic10.3.6教程
  2. sbrk与brk的使用小例子
  3. div中嵌套div水平垂直居中
  4. Apache Thrift入门(安装、测试与java程序编写)
  5. C#实现微信开发
  6. ES5 forEach()用法和提前终止遍历
  7. HashMap 底层算法分析
  8. Java学习笔记-嵌套类
  9. ViewpageMaiActity
  10. &lt;ROS&gt; 通讯方式之 Action
  11. c#实战开发:以太坊钱包对接私链 (二)
  12. MFC中添加了一个dialog,并创建了相应的类,初始化函数没有怎么办?
  13. docker的容器和镜像的差别
  14. Linux VMware安装VMTools工具
  15. kvm虚拟化二: 字符界面管理及 无人值守安装
  16. poj3321-Apple Tree(DFS序+树状数组)
  17. Hbase和Hive的异同
  18. ubuntu安装TexturePicker
  19. Java 线程池submit和execute
  20. ES6,先知道这些必会的才行

热门文章

  1. 沉淀,再出发:docker的原理浅析
  2. August 20th 2017 Week 34th Sunday
  3. Template-Driven Forms 模板驱动式表单
  4. vim基础初步
  5. C# - 静态类和静态构造函数
  6. Css绘制箭头
  7. C 标准库 中 操作 字符串 的 代码
  8. nRF5 SDK for Mesh(一) 介绍和下载源码
  9. 在 S5PV210 的 开发板上 点亮 一个 LED 灯
  10. Spring Boot 构建一个 RESTful Web Service