反射简单调用

 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     }
时间: 2024-08-07 17:02:26

反射简单调用的相关文章

java joor 实现反射简单调用

有时候需要用反射实现代码.直接用工具,joor 上代码: package com.ming.joor; import static org.joor.Reflect.*; public class Test { private String name="aa"; public static void main(String[] args) { on(new Test()).call("aa");//直接调用方法 String name=on(new Test()).

利用反射机制,获取类的字段、方法、并实现简单调用

这篇文章是为之后要介绍Android的ICO框架做预备的,所以,如果想最近学习Android的ICO框架的同学,可以稍微看一下. 首先,简单介绍一下Java里面的反射. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 不知道这样的一段解释,你能否看懂.如果更简单的说,反射就是能够根据你给出类名实例化出一个实实在在的对象.所以,对象的实例

经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能

说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后,给出自己的理解和解决方案,不一定是正确的,但这些方法的确可以解决问题. 如果有人遇到同样的问题,并且看到我的文章解决,那是我的荣幸. !!!!!!但特别需要说明的是,看的越多,不明白的越多,我的看法可能是完全错误的,这些方法只是暂时解决了我的问题, !!!!!!如果有人发现了我的错误,请私信或评论告

通过JAVA反射,调用未知类的类方法

下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子 package com.togeek.mvntest; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author togeek 利用反射调用方法 * @address http://www.cnblogs.com/togeek/ * @Date: 2015年11月29日18:01:31 */ pu

c# 反射简单用法例子

闲来无事,看了下反射的实现,写了个小例子. 新建一个类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WfmReflection { class MyClass { public string m; public void test() { } public int MyProperty { get; set; } } } 建一个类库 using S

java反射简单实现注入

做了好久的java开发 ,却一直没有详细了解java反射机制,后来写项目的时候发现用反射可以少写好多无聊的代码,因此用java反射简单实现注入. java反射的具体细节可参见 这篇博客写的非常详细,点此进入~ 而一般基于业务的编程主要用反射实现将属性动态的注入一个对象中. 以下是方法实现: 1 /** 2 * 根据 传入的map与类名,通过反射实例化对象 3 * @param className 需要实例化的类名 4 * @param map 包含属性的键值对 (String,Object) 5

WebService的创建和部署以及通过反射动态调用WebService

一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称点击添加 这样我们的基础的WebService就创建好了 接下来我们填加一个webservice的测试方法,并且打上特性标签WebMethod,只有打上特性标签WebMethod并且访问修饰符设置为public后外部才能调用到该方法 using System; using System.Collections.Ge

C# 反射简单介绍

原文:https://blog.csdn.net/wu1020300665/article/details/82958455 1.什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类.结构.委托.接口和枚举等)的成员和成员的信息.有了反射,即可对每一个类型了如指掌.另外我还可以直接创建对象,即使这个对象的类型在编译时还不知道. 2.反射简单例子 平时我们写调用dll都是添加引用,然后new对象,如 通过反射,我们可以实现同样的效果,而不需要添加引用,

使用反射机制调用属性和私有成员与代理模式的介绍

使用反射机制调用属性: 通过反射机制可以获得类的属性,获得到的属性同样的可以进行赋值.得值操作,调用getField方法并传递属性的名称可以获得[学Java,到凯哥学堂kaige123.com]指定的属性,调用getFields方法则可以获得全部属性,但是这种方式不能获得私有属性: 代码示例: Student类示例: 运行结果: 从运行结果可以看出只拿出了公开的属性,私有的属性拿不到. 使用反射机制调用私有成员: 1.调用私有属性 在反射机制里调用私有属性需要通过getDeclaredField