C# 反射、使用场景
创建一个 Console 控制台应用程序,
1. 创建一个 Project 类
public class Project
{
public int ID { get; set; } public string ProjectName { get; set; } public DateTime CreateTime { get; set; } public DateTime? UpdateTime { get; set; } public string GetProject(int projectId, string projectName, DateTime createTime, DateTime? updateTime)
{
return string.Format("From Methods:ProjectId:{0}, Project name:{1}, CreateTime:{2}, UpdateTime:{3}",
projectId, projectName, createTime, updateTime);
}
}
2. 使用反射动态给类(Project )的属性设置值、获取值
static void Main(string[] args)
{
Project project = new Project();
Type projectType = project.GetType();
object projectInstance = Activator.CreateInstance(projectType); //FieldInfo fieldID = projectType.GetField("ID");
//fieldID.SetValue(projectInstance, 1); PropertyInfo propertyID = projectType.GetProperty("ID");
propertyID.SetValue(projectInstance, );
var projectId = propertyID.GetValue(projectInstance); PropertyInfo propertyName = projectType.GetProperty("ProjectName");
propertyName.SetValue(projectInstance, "ProjectName001", null);
var name = propertyName.GetValue(projectInstance); PropertyInfo propertyCreateTime = projectType.GetProperty("CreateTime");
propertyCreateTime.SetValue(projectInstance, DateTime.Now, null);
var createTime = propertyCreateTime.GetValue(projectInstance); PropertyInfo propertyUpdateTime = projectType.GetProperty("UpdateTime");
propertyUpdateTime.SetValue(projectInstance, null, null);
var updateTime = propertyUpdateTime.GetValue(projectInstance); Console.WriteLine("From Property:ProjectID:{0} Project name:{1}, CreateTime:{2}, UpdateTime:{3}",
propertyID, name, createTime, updateTime); MethodInfo method = projectType.GetMethod("GetProject");
object[] parsArray = { , "Project00111", DateTime.Now.AddDays(), null };
var result = method.Invoke(projectInstance, parsArray);
Console.WriteLine(result);
}
C# 反射、使用场景的更多相关文章
- Java反射机制的适用场景及其利与弊 ***
一.反射的适用场景是什么? 1).Java的反射机制在做基础框架的时候非常有用,有一句话这么说来着:反射机制是很多Java框架的基石.而一般应用层面很少用,不过这种东西,现在很多开源框架基本都已经给你 ...
- .NET面试题系列[6] - 反射
反射 - 定义,实例与优化 在面试中,通常会考察反射的定义(操作元数据),可以用反射做什么(获得程序集及其各个部件),反射有什么使用场景(ORM,序列化,反序列化,值类型比较等).如果答得好,还可能会 ...
- NeHe OpenGL教程 第二十六课:反射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 反射调用与Lambda表达式调用
想调用一个方法很容易,直接代码调用就行,这人人都会.其次呢,还可以使用反射.不过通过反射调用的性能会远远低于直接调用——至少从绝对时间上来看的确是这样.虽然这是个众所周知的现象,我们还是来写个程序来验 ...
- java反射快速入门(一)
本文会从以下几个方面讲起 ① 反射的简单解释 ② java反射的API接口 及 demo ③ 反射的优缺点.应用场景 一.什么是反射? java反射:在程序运行中动态获取类的信息,及动态调用对象的方法 ...
- 【Unity Shaders】Reflecting Your World(反射吧!)介绍
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- C#基础系列-反射
1.反射的定义 反射(Reflection),是.Net中获取运行时类型信息的方式.程序集中有关程序及其类型的数据被称为元数据(metadata).程序在运行时,可以查看其它程序集或其本身的元数据.一 ...
- 6.C#知识点:反射
1.反射是什么? 反射提供描述组件,模块和类型的对象(类型为Type).您可以使用反射来动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型,并调用其方法或访问其字段和属性.如果您在代码中使 ...
- 《Python》反射、内置方法(__str__,__repr__)
一.反射 通过字符串的形式操作对象相关的属性.(使用字符串数据类型的变量名来获取这个变量的值) Python中的一切事物都是对象(都可以使用反射) 反射类中的变量 反射对象中的变量 反射模板中的变量 ...
- 【C#学习笔记】反射的简单用法
常见的使用反射的场景: 程序在运行时动态地访问类的成员,如获得类的变量.方法. 例如:用反射给本类的变量赋值. public class Student{ public string studentN ...
随机推荐
- CSS-锚点笔记
注意点: position属性 定义建议元素布局所用的定位机制 {position:static/absolute/relative/fixed;} static:默认值,没有定位 absolute: ...
- 金融finaunce单词finaunce财经
金融(FINANCE或FINAUNCE)就是对现有资源进行重新整合之后,实现价值和利润的等效流通.(专业的说法是:实行从储蓄到投资的过程,狭义的可以理解为金融是动态的货币经济学.) 金融是人们在不确定 ...
- scrapy 图片管道学习笔记
使用scrapy首先需要安装 python环境使用3.6 windows下激活进入python3.6环境 activate python36 mac下 mac@macdeMacBook-Pro:~$ ...
- MySQL DataType--浮点数(Floating-Point Types)学习
浮点数(Floating-Point Types) MySQL支持两种浮点数类型来表示近似值:1.FLOAT,单精度浮点数,使用4字节存储,存储数据范围3.402823466E+38 - -1.175 ...
- emqx配置ssl
1.生产自签证书 mkdir /etc/emqttd/certs/ && cd /etc/emqttd/certs/ openssl genrsa -out ca-key.pem 20 ...
- 60 分钟极速入门 PyTorch
2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch. 因其在灵活性.易用性.速度方面的优秀表现,经 ...
- Redis开发与运维学习笔记
<Redis开发与运维>读书笔记 一.初始Redis 1.Redis特性与优点 速度快.redis所有数据都存放于内存:是用C语言实现,更加贴近硬件:使用了单线程架构,避免了多线程竞争 ...
- RS232、RS485和TTL电平与串行通信
RS232.RS485和TTL 作为一个底层软件开发工程师,经常会碰到RS232.RS485和TTL这一类的问题. 之前总是碰到问题之后Google一下,把当下的问题解决了之后就不管了,过个一两天就忘 ...
- heapq 对有序的数组列表进行整体排序
""" 功能:实现对有序的多个数组整体排序,获取top k个最小元素 """ from heapq import * def heap_so ...
- python通过json读写序列类型的数据文件
import json class a: def writeReadJson(self): list2 =['] with open("test.txt",'w') as f: j ...