C# 反射获取属性类型及属性值,两个实体转换
一、两个实体数据转换
/// <summary>
/// 为属性赋值
/// </summary>
/// <typeparam name="T">源单类</typeparam>
/// <typeparam name="S">需要转换的实体类</typeparam>
/// <param name="source"></param>
/// <returns></returns>
public static S EntityConvert<T, S>(T source)
{
S target = Activator.CreateInstance<S>();
var sType = source.GetType();
var dType = typeof(S);
foreach (PropertyInfo now in sType.GetProperties())
{
var name = dType.GetProperty(now.Name);
if (name == null)
continue;
dType.GetProperty(now.Name).SetValue(target, now.GetValue(source));
}
return target;
}
二、两个集合之间的转换
public static List<S> EntityConvert<T, S>(List<T> sourceList)
{
List<S> list = new List<S>();
IEnumerator<T> enumerator = sourceList.GetEnumerator();
while (enumerator.MoveNext())
{
list.Add(EntityConvert<T, S>(enumerator.Current));
}
return list;
}
三、获取属性的名称、属性类型、属性值
public class User
{
public int Id { get; set; }
public string name { get; set; }
public decimal money { get; set; }
public string sex { get; set; }
public string Email { get; set; }
public DateTime birth { get; set; }
public int State { get; set; }
}
public void Test(){
var user = new User
{
birth = DateTime.Now,
Email = "123@qq.com",
Id = ,
money = ,
name = "张三",
sex = "男",
State =
};
var type = user.GetType().GetProperties();
foreach (var item in type)
{
Console.WriteLine($"属性名称:{item.Name},属性值:{ item.GetValue(user)},属性类型:{item.PropertyType.Name}");
}
}

C# 反射获取属性类型及属性值,两个实体转换的更多相关文章
- 【java】java获取对象属性类型、属性名称、属性值
java获取对象属性类型.属性名称.属性值 获取属性 修饰符:[在Field[]循环中使用] String modifier = Modifier.toString(fields[i].getModi ...
- 获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎
同步发布:http://www.yuanrengu.com/index.php/20170511.html 先简单介绍下反射的概念:java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所 ...
- java 反射获取类的属性 类型 名称和值
/** * 获取属性类型(type),属性名(name),属性值(value)的map组成的list * */ private List getFiledsInfo(Object o){ Field[ ...
- Java反射获取对象VO的属性值(通过Getter方法)
有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个 ...
- java获取对象属性类型、属性名称、属性值
/** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String ...
- java获取对象属性类型、属性名称、属性值 【转】
/** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String ...
- java 通过反射获取调用类方法及属性
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
- java-通过反射获取目标类的属性,方法,构造器
首先定义一个urse package com.studay_fanshe; public class User { private String uname; private int age; pri ...
- 使用反射获取类中的属性(可用于动态返回PO类的列,当做表格的表头)
//利用反射取类中的属性字段 try { Class clazz = Class.forName("houji.bean.model.TaskModel"); Field[] fi ...
随机推荐
- css3实现条纹以及方格斜纹背景
CSS代码: .stripes { height: 250px; width: 375px; float: left; margin: 10px; -webkit-background-size: 5 ...
- php中include和require的区别(整理)
require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 requi ...
- 2018.5.24 lvm创建pool
在调试生产环境时遇到以下情况: 好奇心驱使下,发现是lvm的一个功能——lvm创建pool,就手动创建了相似的环境,操作截图如下: 主要命令: vgcreate -s 32M vg /dev/vdb1 ...
- HOMEWORK1
回顾你过去将近3年的学习经历 当初你报考的时候是真正喜欢计算机这个专业吗? 当初报考的时候是选择英语和计算机专业,报英语那个学校没去上,就来学了计算机,对计算机专业的感觉介于喜欢和热爱之间,就是说还是 ...
- git 命令提交文件
方法/步骤 打开要添加的文件的位置,右键,点击下面强调的内容,进入命令页面 先执行命git pull,这是提交的基本操作, git status,查看现在当前的文件状态 没有看到你现在要添加的文件 ...
- edgedb 集成timescaledb
timescaledb 是一个强大的pg 扩展,可以让我们的pg 数据库支持时序数据库的能力,以下测试下与edgedb 集成 预备 因为edgedb 当前是基于pg11 开发的,所以需要使用pg11 ...
- 20175202 《Java程序设计》第五周学习总结
20175209 2018-2019-2 <Java程序设计>第五周学习总结 教材知识点总结 1.接口声明: 使用关键字interface来定义接口. 定义接口时使用关键字interfac ...
- sqlserver数据库不能重命名报错5030——我的一点小思考
在学习asp.net的时候使用mssql‘经常会出现这种错误,数据库不能重名名5030的错误,其实很简单原因就是有应用程序正在占用这个连接,使用这样一行命令就可以查询出正在占用的连接 use mast ...
- IntelliJ IDEA 下载安装以及破解
转载自:http://blog.csdn.net/my_jack/article/details/69248495 IDEA开发工具是java语言开发的集成环境,IntelliJ在业界被公认为最好的j ...
- MS+Oracle各种兼容性的坑
自17年开始新产品开始全面支持Oracle 12c,但陆续发现各种环境问题兼容性的坑,在此汇总一下: 使用11.2.0.1的客户端版本,在连接12c时,发现system账号登陆报用户名密码错误,普通的 ...