c#利用反射Assembly 对类和成员属性进行操作
protected static void test() { //获取程序集 Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();//Assembly.LoadFrom("test.dll"); //获取模块 Module[] modules = assembly.GetModules(); foreach (Module module in modules) { Console.WriteLine("module name:" + module.Name); } //获取类 Type type = assembly.GetType("Reflect_test.PurchaseOrderHeadManageModel", true, true); //命名空间名称 + 类名 //创建类的实例 object obj = Activator.CreateInstance(type, true); //获取私有字段 FieldInfo[] myfields = type.GetFields(BindingFlags.NonPublic | BindingFlags.IgnoreCase | BindingFlags.Instance); for (int i = 0; i < myfields.Length; i++) { Console.WriteLine("字段名:{0},类型:{1}", myfields[i].Name, myfields[i].FieldType); } //获取公共属性 PropertyInfo[] Propertys = type.GetProperties(); for (int i = 0; i < Propertys.Length; i++) { // Propertys[i].SetValue(Propertys[i], i, null); //设置值 // Propertys[i].GetValue(Propertys[i],null); //获取值 Console.WriteLine("属性名:{0},类型:{1}",Propertys[i].Name,Propertys[i].PropertyType); } //构造函数集合 ConstructorInfo[] myconstructors = type.GetConstructors(); foreach (ConstructorInfo csinfo in myconstructors) { Console.WriteLine("ConstructorInfo:{0}",csinfo.Name); foreach (ParameterInfo pinfo in csinfo.GetParameters())//构造函数参数列表 { Console.WriteLine("Parameter:{0},{1}", pinfo.Name,pinfo.ParameterType); } } //公共方法,包括属性 MethodInfo[] methods = type.GetMethods(); foreach (MethodInfo method in methods) { //IsSpecialName:是否是属性 if (!method.IsSpecialName) { // Console.WriteLine("类型:" + method.Attributes); Console.WriteLine("method name:" + method.Name); } } //调用静态方法 int result = (int)type.InvokeMember("StaticPlus", BindingFlags.InvokeMethod, null, null, new object[] {2,3 }); Console.WriteLine("调用静态方法-结果是:{0}",result); //调用非静态方法 result = (int)type.InvokeMember("Plus", BindingFlags.InvokeMethod, null, obj, new object[] { 3, 4 }); Console.WriteLine("调用非静态方法-结果是:{0}",result); EventInfo[] Myevents=type.GetEvents(); foreach (EventInfo einfo in Myevents) { Console.WriteLine("事件:{0}", einfo.Name); } }
转载于:https://www.cnblogs.com/colder/p/3360608.html
c#利用反射Assembly 对类和成员属性进行操作相关推荐
- php成员属性的声明方式,PHP中如何定义类及其成员属性与操作_PHP教程
类的概念:类是具有相同属性和操作的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属 ...
- 利用反射技术修改类中的字段(成员变量的反射)
题目:利用反射技术修改类中的字段及成员变量的反射 作者:Vashon 一.首先定义一个类如下: class ReflectPoint {private int x; //私有的public int y ...
- 利用反射动态实例化类执行方法并传值
/// <summary> /// 利用反射动态实例化类执行方法并传值 /// </summary> /// <param ...
- Java反射之Filed(类中的属性对象)
通过反射机制获取类中的属性对象. 1.获取类中所有的public属性(包括父类):getFields(): public class TestFiled {class A{public int age ...
- C# 利用反射动态调用类成员
使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下: public object InvokeMember( string name, BindingFla ...
- (C#)利用反射动态调用类成员[转载]
使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name ...
- 利用反射动态调用类成员C#
使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name ...
- c# 利用反射获得某个类或者对象的所有属性
今天碰到一个类,总共有60个列及属性 我做的一个功能需要把这些属性放到一个数组里 一想要用new string[]{"","",....}的话写死了·· 就想到 ...
- 利用反射获取一个类中的所有方法和该方法的参数
因为平时用反射很少,之前一次面试被问到反射这块的一个问题,很简单,当时给了个不是很确切的答案,回家之后也忘了去找出这个问题的答案,今天手头上的工作比较闲,就把之前的那个问题给解决下. 被问到的是,我只 ...
- C#利用反射机制,获取实例的属性和属性值
C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): Type t = tc.GetType();// ...
最新文章
- python json数据格式数组内元素递增赋值_python深浅复制,类型转换, json操作,数组操作...
- win docker运行MySQL
- 1.Hadoop的学习(Linux的基础命令)
- 一道简单的python面试题-购物车
- java hanlp分词_Hanlp分词实例:Java实现TFIDF算法
- 八种状态增加测试用例状态的精确度
- 云昆明理工大学 计算机复试,2012年昆明理工大学计算机考研复试试题(回忆版)...
- pcfg 自然语言处理_自然语言处理导航
- nginx 网络模型,cpu亲和等优点
- python with关键字_python中用with关键字来实现上下文管理器.
- poj 1270 Following Orders
- 阿里安全体系获国际顶会表彰,安全技术将有九大新趋势
- shell 获取指定ip的丢包率
- scratch转flash、exe教程
- Java反射高频面试题(附答案),做了5年Java
- python游戏项目练习——逃出生天(2)
- 计算某年某月某日是星期几(基姆拉尔森计算公式)
- 《CODE》读后笔记——第14~20章
- 一个简单的acm竞赛题
- Java Swing添加背景图片
热门文章
- 详解JavaScript的闭包
- vmware15安装‘黑苹果’macOS 10.13(17A365)
- 图片hover且设置transform其父级border-radius失效
- C++ 17 string_view(转载)
- Ribbon负载均衡源码解读
- lnmp mysql 命令_LNMP状态管理命令
- linux如何秀爱swap大小,老毛桃PE启动U盘集合CDlinux,BT5可保存设置,wifislax,sliatz中文定制版的方法[存档......
- 阿里巴巴商学院计算机考研,2017年杭州师范大学阿里巴巴商学院826计算机基础之C程序设计考研仿真模拟题...
- linux脚本定义量,Linux上增加自定义脚本的展现量
- 设置width不生效_CSS:你不知道的width:auto