理解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 反射和动态代理
随机推荐
- java学习(三)数组
一维数组的定义格式: int[] a; //定义一个int类型的数组a变量 int a[]; //定义一个int类型的a数组变量 初始化一个int类型的数组 int[] arr = new i ...
- HBase介绍(2)---数据存储结构
在本文中的HBase术语:基于列:column-oriented行:row列组:column families列:column单元:cell 理解HBase(一个开源的Google的BigTable实 ...
- NGrinder操作指南
一.使用nGrinder谷歌插件录制性能测试脚本: 1.下载录制插件压缩包ngrinder-recorder-1.0.7z,解压到本地目录. 2.打开Chrome浏览器,URL框内输入chrome:/ ...
- GPU大百科全书 第二章 凝固生命的光栅化
光栅化——死神来了…… 前言:在上一期的GPU大百科全书里,我们目睹了可爱的香草从抽象世界走向现实,从方程还原成实体的全过程.可以说香草活了,因为几何单元,我们赋予了她完整的灵魂. 如果你正在为G ...
- collections中的defaultdict
用类型 用函数返回值 嵌套的dict from collections import defaultdict def tree(): return defaultdict(tree) c = defa ...
- [转] 迁移 VMware 虚拟机到 KVM
迁移 VMware 虚拟机到 KVM 如何迁移 VMware 上的 Windows 及 Linux 虚拟机到基于 KVM 的虚拟机 目前 x86 平台上最流行的虚拟化软件是 VMware 公司的系列产 ...
- UITextView笔记
UITextView继承自UIScrollView UITextView可以展示多行文字 控制上下左右缩进 myTextField.textContainerInset = UIEdgeInsetsM ...
- xml约束技术之dtd
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.这篇文章作简单介绍下DTD的用法.想学习完整的请点击下面w3c的教程. 1.DTD官方教程 ##2.xml约束技术: DTD约束:语法相 ...
- numpy之转置(transpose)和轴对换
转置(transpose)和轴对换 转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制操作). 转置有三种方式,transpose方法.T属性以及swapaxes方法. 1 .T,适用于一 ...
- 1、Caffe数据层及参数
要运行Caffe,需要先创建一个模型(model),每个模型由许多个层(layer)组成,每个层又都有自己的参数, 而网络模型和参数配置的文件分别是:caffe.prototxt,caffe.solv ...