zoukankan
html css js c++ java
一个浅显易懂的反射例子
反射,就是程序集的一面镜子,所以才叫反射.废话少说,以一个简单的例子切入正题吧:
1 创建用于反射使用的DLL
新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)
代码如下:
using
System;
namespace
Webtest
{
/**/
///
<summary>
///
Summary description for ReflectTest.
///
</summary>
public
class
ReflectTest
{
public
ReflectTest()
{
//
//
TODO: Add constructor logic here
//
}
public
string
WriteString(
string
s)
{
return
"
欢迎您,
"
+
s;
}
/**/
/**/
/**/
///
<summary>
///
dsajkjflasjdfalksdjfaskfd
///
</summary>
///
<param name="s"></param>
///
<returns></returns>
public
static
string
WriteName(
string
s)
{
return
"
欢迎您光临,
"
+
s;
}
public
string
WriteNoPara()
{
return
"
您使用的是无参数方法
"
;
}
}
}
应用于反射的例子
在ASPNET页面中加入以下函数:
private
void
Button1_Click(
object
sender, System.EventArgs e)
{
System.Reflection.Assembly ass;
Type type ;
object
obj;
try
{
ass
=
System.Reflection.Assembly.LoadFile(
@"
C:\TestReflect\ReflectQuickStart\TestReflect\bin\Debug\TestReflect.dll
"
);
type
=
ass.GetType(
"
Webtest.ReflectTest
"
);
//
必须使用名称空间+类名称
System.Reflection.MethodInfo method
=
type.GetMethod(
"
WriteString
"
);
//
方法的名称
obj
=
ass.CreateInstance(
"
Webtest.ReflectTest
"
);
//
必须使用名称空间+类名称
string
s
=
(
string
)method.Invoke(obj,
new
string
[]
{
"
jianglijun
"
}
);
//
实例方法的调用
Response.Write(s
+
"
<br>
"
);
method
=
type.GetMethod(
"
WriteName
"
);
//
方法的名称
s
=
(
string
)method.Invoke(
null
,
new
string
[]
{
"
jianglijun
"
}
);
//
静态方法的调用
Response.Write(s
+
"
<br>
"
);
method
=
type.GetMethod(
"
WriteNoPara
"
);
//
无参数的实例方法
s
=
(
string
)method.Invoke(obj,
null
);
Response.Write(s
+
"
<br>
"
);
method
=
null
;
}
catch
(Exception ex)
{
Response.Write(ex
+
"
<br>
"
);
}
finally
{
ass
=
null
;
type
=
null
;
obj
=
null
;
}
}
以上是本人的粗浅理解,但是倒是可以作为一个入门的例子.just keep it simple and stupid.
查看全文
相关阅读:
关闭Windows的CTRL+ALT+DEL 和 ALT+TAB组合键的方法
VC中常用文件操作(一)
VC 创建NT服务程序
几个操作文件的API函数
VC中常用文件操作(二) ——INI文件操作
初学OpenCV之图像坐标读取函数cvGet2D()
OpenCV学习之图像读取与显示
SLT容器之vector简单实现C++运行时多态
C/C++文件——数据写入、读取
OpenCV学习之视频读取与帧的提取、显示及保存
原文地址:https://www.cnblogs.com/engine1984/p/1032078.html
最新文章
C#中,仿效Java中,SQL参数以?替代的做法,解决IN的防注入问题
关于<<、>>、~、&、|、^的介绍
开发路,学习路
html5圆形多角
资源整理
网上商城系列一 : 业务分析
Hibernate中处理树状结构
Hibernate 1+N问题及解决
碰撞检测问题及解决
模拟hibernate读配置文件生成sql
热门文章
最新使用VSS 2005版本控制发现无法自动签出的解决方法
阿里巴巴 静态数据项目 (SQL SERVER 通过链接服务器访问ORACLE 存储过程 )
JS日期选择控件
javascript 中cookie的存储,获取cookie,删除cookie的方法。
ORACLE 遍历循环更新表中的数据
5173——淘卡项目 将IP转数字 和 将数字转IP方法
GRIDVIEW FOOTER 多行 合并
SQL SERVER 数据库通过连接服务器 调用ORACLE 数据库中的存储过程
6+1彩票分析器
COOKIES 随笔 C#
Copyright © 2011-2022 走看看