Type反射遍历类的属性
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<!--实际生产中这里就是固定的配置方式(前面是实体属性,后面是约定验证方式)-->
<add key="Setting1" value="name|sex|address,Account"/>
<add key="Setting2" value="cardID|phone,Identity"/>
</appSettings>
</configuration>
namespace ConsoleApplication1
{
public class User
{ public string name { get; set; }
public int age { get; set; }
public string address { get; set; }
public string cardID { get; set; }
public string phone { get; set; } } public class VerfiyInfo
{
public string info { get; set; }
public string method { get; set; }
}
class Program
{
static void Main(string[] args)
{ User user = new User()
{
name = "Tom",
address = "New York",
age = 20,
cardID = "3203821922222",
phone = "18014925250"
};
VerfiyInfo verfiyInfo = GetVerfiy<VerfiyInfo>(user); Console.WriteLine(verfiyInfo.info + ":" + verfiyInfo.method);
Console.ReadKey();
}
public static T GetVerfiy<T>(User model)
{
string appSetting = System.Configuration.ConfigurationSettings.AppSettings["Setting1"];
if (string.IsNullOrEmpty(appSetting))
{
throw new Exception("无配置信息");
}
string[] strA = appSetting.Split(',');
string strB = strA[0];
string result = string.Empty;
Type tp = model.GetType();
PropertyInfo[] pros = tp.GetProperties();
foreach (PropertyInfo pro in pros)
{
strB = strB.Replace(pro.Name, pro.GetValue(model).ToString()); }
string strJson = "{\"info\":\"" + strB + "\",\"method\":\"" + strA[1] + "\"}";
T rModel = JsonConvert.DeserializeObject<T>(strJson);
return rModel; }
}
}
Type反射遍历类的属性的更多相关文章
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- c#自定义ORM框架---(泛型&反射&实体类扩展属性<附带通用增、删、查、改>)
该教材主要是运用到泛型.反射和实体类扩展属性 步骤一.建立扩展属性类 实体类扩展属性要继承Attribute基类完成 [AttributeUsage(AttributeTargets.Property ...
- Java反射学习-1 - 反射获取类的属性,方法,构造器
新建一个Person类 package cn.tx.reflect; /** * 注解初步了解 * @author Administrator * */ public class Person { p ...
- C# 遍历类的属性并取出值
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 今天有点胡思乱想,想遍历MVC Model的属性并 ...
- java 反射获取类的属性 类型 名称和值
/** * 获取属性类型(type),属性名(name),属性值(value)的map组成的list * */ private List getFiledsInfo(Object o){ Field[ ...
- C#遍历类的属性,然后给其赋值
public class PP { public string a { get; set; } public string b { get; set; } public string c { get; ...
- 【转】java遍历实体类的属性和数据类型以及属性值
和同学接了个外包的活,由于项目中很多地方要用到poi导出excel,而每次导出都要写很多相同的代码,因为poi的cell.setCellValue();每次设置的都是不同实体bean的属性值,导致代码 ...
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
转自goldeneyezhang原文 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值总结: 对应某个类的 ...
- .NET C#利用反射获取类文件以及其中的方法&属性 并获取类及方法上的特性
了解C#特性类并声明我们自己的特性类[AttributeTest]代码如下 using System; namespace AttributeTest { /* 特性说明 特性本质是一个继承和使用了系 ...
随机推荐
- 35 个最好用 Vue 开源库
2018年度 35 个最好用 Vue 开源库 在本文中,我们将推荐一些非常好用的 Vue 相关的开源项目.无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包.对于开发者来说,如果没有这些开源软件包 ...
- kubeadm安装集群系列-1.基础服务安装
基础服务 本文基于centos7.5部署 规划 10.8.28.200 master-VIP 10.8.31.84 k8s-test-master-1 10.8.152.149 k8s-test-ma ...
- 创建vue 项目
sudo npm install -g @vue/cli-init vue init webpack my-project cd my-project/ npm install npm run dev
- USACO 1.1 Your Ride Is Here
直接模拟 #include<cstdio> #include<cstring> using namespace std; #define MAXN 10 #define MOD ...
- 输入一个数值num,对1到num的所有的数值进行全排列
输入一个数值num,对1到num的所有的数值进行全排列: 其实这个题目可以看成是将1到num个数字放入num个有序的盒子里面:当将最后一个数字放入盒子里的时候,就输出所有盒子里的数字:这就是一个排列的 ...
- vue $refs获取dom元素
1.今天做vue项目有个获取dom节点,主要目的是获取节点让滚动到顶部 首先在滑动容器去添加ref <div class="contentScroll" ref=" ...
- MySQL中的聚集索引和辅助索引
MySQL中的聚集索引和辅助索引 当你定义一个主键时,innodb存储引擎就把他当做聚集索引 如果你没有定义一个主键,则innodb定位到第一个唯一索引,且改索引的所有列值均为非空,就将其当做聚集索引 ...
- 【C++11应用】基于C++11及std::thread实现的线程池
目录 基于C++11及std::thread实现的线程池 基于C++11及std::thread实现的线程池 线程池源码: #pragma once #include <functional&g ...
- 嵌套泛型参数IList<IList<Object>>如何传参
在调用第三方库的时候,有这么一个泛型参数,如下图: 按照经验,使用两个List嵌套声明变量即可: IList<IList<AnnotatedPoint2D>> outImag ...
- socket传送文件格式的问题
在python3中socket传送文件只能传送‘bytes'类型,如下例子: import socket client = socket.socket()client.connect(("l ...