反射简单调用

简介: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 string path = @"J:\beforesoft\Test\NET.
 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             string path = @"J:\beforesoft\Test\NET.Reflection\bin\Debug\NET.Reflection.dll";
 6             Assembly ass = Assembly.LoadFile(path);
 7             //获取类
 8             //第一种方法,在类的构造函数是无参时使用方便,在有参时就不容易实现
 9             //object obj = ass.CreateInstance("NET.Reflection.Person");
10             //Type type = obj.GetType();
11             //第二种方法,通过获得类型的构造函数来实例化对象,在构造函数是有参时也容易实现
12             Type type = ass.GetType("NET.Reflection.Person");
13             //ConstructorInfo construct = type .GetConstructor(new Type[0]);
14             //object obj = construct.Invoke(null);
15             ConstructorInfo constructor = type.GetConstructor(new Type[] { typeof(string), typeof(int) });//构造函数调用有参构造函数
16             object obj = constructor.Invoke(new object[] { "张三", 20 });
17             MethodInfo method1 = type.GetMethod("SayName");//得到无参公有方法
18             MethodInfo method2 = type.GetMethod("SayAge", BindingFlags.Instance | BindingFlags.NonPublic);//得到私有方法
19             MethodInfo method3 = type.GetMethod("GetName", new Type[] { typeof(string) });//得到带参数的公有方法(后面的Type类型可以省略,但如果是重载方法就不能省)
20             MethodInfo method4 = type.GetMethod("GetName", new Type[0]);
21             MethodInfo method5 = type.GetMethod("PrintAge");//得到参数是ref的的方法
22             PropertyInfo Name = type.GetProperty("Name");//得到属性
23             PropertyInfo Age = type.GetProperty("Age");
24             FieldInfo name = type.GetField("name", BindingFlags.Instance | BindingFlags.NonPublic);//得到字段(全是私有的)
25             Name.SetValue(obj, "李四", null);//给Name设值,后面的null是对应的索引器
26             Age.SetValue(obj, 23, null);
27             method1.Invoke(obj, null);
28 
29             method2.Invoke(obj, null);
30 
31             Console.WriteLine(method3.Invoke(obj, new object[] { "王五" }));//调用有返回值的方法
32 
33             method4.Invoke(obj, null);
34 
35             method5.Invoke(obj, new object[] { 14 });//调用参数是ref的方法
36             Console.ReadLine();
37         }
38     }

 

目录
相关文章
|
2月前
调用反射类的指定方法
调用反射类的指定方法
13 3
|
2月前
调用反射类的方法
调用反射类的方法
16 3
|
9月前
|
Java
反射和反射的方法
反射和反射的方法
61 0
|
9月前
|
Java API
Java反射(通过反射获取构造函数、方法、属性)
1.通过反射获取构造函数,2.通过反射获取方法,3.通过反射调用成员属性
84 0
|
Java API Spring
反射:替对象执行方法
反射:替对象执行方法
反射:替对象执行方法
|
IDE 安全 Java
Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?
Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?
224 0
Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?
|
XML Java 数据格式
反射机制(什么是反射、反射操作构造器、方法、字段、反射加载资源)
反射机制(什么是反射、反射操作构造器、方法、字段、反射加载资源)
121 0
反射机制(什么是反射、反射操作构造器、方法、字段、反射加载资源)
|
Java 开发者
反射调用普通方法|学习笔记
快速学习反射调用普通方法
反射调用普通方法|学习笔记