理解C#反射
参考文章:http://blog.csdn.net/educast/article/details/2894892
上面的文章将C#反射要用到的方法都给出了,下面我将写个例子,帮助理解
【1.使用反射读取程序集】
namespace Ref
{
class Program
{
static void Main(string[] args)
{
//读取程序集
Assembly ass = Assembly.Load("Ref");
//获取Ref程序集中的Program类
Type t = ass.GetType("Ref.Program");
//根据获取到的类创建实例
object o = Activator.CreateInstance(t);
//获取方法
MethodInfo mi = t.GetMethod("Show");
//反射调用自己的方法(需要传递其类,如果是静态方法则不需要传递o,写成null就行)
mi.Invoke(o, null);
} public void Show()
{
Console.WriteLine("显示22");
}
}
}
【2.通过类库DLL文件的反射】
[链接:使用VS制作Dll文件]http://blog.csdn.net/u010026134/article/details/51598499
使用VS的功能,添加新建项目---类库,比如写了以下代码
namespace MyDll
{
public class Class1
{ } public class SayAndSee
{
public string say = "isOk?"; public void MyFun()
{
string see = "isee";
Console.WriteLine("我看见你了");
} public int Cau(int num1, int num2)
{
return num1 + num2;
}
}
}
然后点击生成---生成解决方法,这样我们就可以在DEBUG目录下获取到这个类的Dll文件了,获取其DLL文件路径
接下来就可以去使用了
namespace RefDLL
{
class Program
{
static void Main(string[] args)
{
//读取DLL文件
Assembly assembly = Assembly.LoadFrom(@"C:\Users\zts.FORTUNE\Documents\Visual Studio 2015\Projects\Test3\RefDLL\bin\Debug\MyDll.dll");
//获取MyDll程序集中的SayAndSee类
Type t = assembly.GetType("MyDll.SayAndSee");
//根据获取到的类创建实例
object o = Activator.CreateInstance(t);
//获取方法
MethodInfo mi = t.GetMethod("MyFun");
//反射调用自己的方法(需要传递其类,如果是静态方法则不需要传递o,写成null就行)
mi.Invoke(o, null);
}
}
}
理解C#反射的更多相关文章
- 由浅到深理解java反射
1.基础概念 class类: 1.1java是面向对象的,但是在java中存在两种东西不是面向对象的 一种是普通的数据类型,这也是封装数据类存在的原因. 二种是静态静态成员. 1.2所以我们首先要理解 ...
- 深入理解Java反射+动态代理
答: 反射机制的定义: 是在运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法,对任意一个对象都能够通过反射机制调用一个类的任意方法,这种动态获取类信息及动态调用类对象方法的功能称为j ...
- 理解Java反射机制
理解Java反射机制 转载请注明出处,谢谢! 一.Java反射简介 什么是反射? Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在.灵活掌握Java反射机制,对学习框架技术有很大 ...
- 深入理解Java反射
要想理解反射的原理,首先要了解什么是类型信息.Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息:另一种是反射机制,它允许我们在 ...
- 由浅入深理解----java反射技术
java反射机制详解 java反射机制是在运行状态下,对任意一个类可以获取该类的属性和方法,对任意一个对象可以调用其属性和方法.这种动态的获取信息和调用对象的方法的功能称为java的反射机制 clas ...
- Java复习总结——详细理解Java反射机制
反射是什么 反射的作用用一句简单的话来讲就是可以对代码进行操作的代码,这个特性经常在被用于创建JavaBean中,通常造轮子的人会用到这个特性,而应用程序员用到这个特性的场景则较少. 能够分析类能力的 ...
- 理解Java反射
一.反射简介 Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息:另一种是反射机制,它允许我们在运行时发现和使用类的信息. 1. ...
- 如何理解java反射?
一.反射基本概念 反射之中包含了一个"反"的概念,所以要想解释反射就必须先从"正"开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产 ...
- 深入理解 Java 反射和动态代理
随机推荐
- Python 数据分析—第七章 数据归整:清理、转换、合并、重塑
一.数据库风格的Dataframe合并 import pandas as pd import numpy as np df1 = pd.DataFrame({'1key':['b','b','a',' ...
- PMBOK项目管理思维导图梳理
采用思维导图的形式来展示项目管理的五大过程组.九大知识领域,能更好的展示框架结构,便于理解.分析. 下图为思维导图化制的项目管理要素:灰色为启动过程组.白色为规划过程组.紫色为执行过程组.蓝色为监控过 ...
- windows8.1 windows defender service无法启动解决方案
分析:当pc安装第三方杀毒软件,比如360杀毒,这时候360会强制关闭mse杀毒服务,无法在服务栏目里启动.由于windows defender service是系统强制启动进程,无法在系统启动后进行 ...
- 数独高阶技巧之八——SDC
在本系列的第四篇“简单异数链”中,向大家介绍了XY-Wing等一系列Wing类技巧,并提到可以用(拐弯的)数组的观念来理解这些结构,经过第六篇ALS的学习之后,大家回过头再去看Wing,应该可以发现相 ...
- kali linux之Backdoor-factory
Backdoor-------python编写 适用于windows PE x32/x64 和Linux ELF x32/x64(OSX),支持msf payload 自定义payload 将shel ...
- ubuntu14.04安装zabbix
1. apt-get updateapt-get install apache2 mysql-server libapache2-mod-php5 php5-gd php5-mysql php5-co ...
- LINQ -2015-04-27
LINQ--language-integrated-query 1.它和sql语言区别呢? SQL语言常用在ralational-database中,而LINQ对内存数据,数据库,xml文件等多种形式 ...
- Mac环境下安装python库时出现ModuleNotFoundError: No module named 'XXX'
在使用pip3安装爬虫的一些有关库时发现安装成功后,import时发现又找不到,后来发现一个解决方法. 在Anaconda-Navigator里面打开environment里面寻找发现真的没有,这时再 ...
- IOS开发之——objectForKey与valueForKey在NSDictionary中的差异
从 NSDictionary 取值的时候有两个方法,objectForKey: 和 valueForKey:,这两个方法具体有什么不同呢? 先从 NSDictionary 文档中来看这两个方法的定义: ...
- ubuntu->桌面版-常用设置
1.目前使用unity桌面 ,使用Gnome,未来将会采用 Qt/QML 语言写的桌面 2.汉化 系统: 在 设置(setting)->语言支持(language support)->选择 ...