理解C#反射
2024-08-20 19:07:37
参考文章: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);
}
}
}
最新文章
- EF多对多更新报错(TableNoTracking引发的bug)
- Jquery的$(selector).each()和$.each()原理和区别
- Linux ext3 ext4 区别
- 【JAVA】Calendar
- 理解angularjs的作用域
- Oracle数据库表设计时的注意事项
- UPnP基本原理介绍
- 【转】最短路&;差分约束题集
- MetadataType的使用,MVC的Model层数据验证
- js与uri中location关系
- hibernate之CRUD操作
- 实用 .htaccess 用法大全
- IT学习网站
- App功能测试
- [Swift]LeetCode523. 连续的子数组和 | Continuous Subarray Sum
- Linux--虚拟环境
- 基于百词斩和扇贝单词的背单词APP软件测试
- ubuntu主题收集
- Flask之项目创建,路由以及会话控制
- 新建 .NET Core 控制台项目