C#反射实例No.1
生活随笔
收集整理的這篇文章主要介紹了
C#反射实例No.1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 創建用于反射使用的DLL
新建一個C#類庫項目,拷貝源代碼如下,編譯生成DLL(假如DLL的文件名是TestReflect.dll)
?1using?System;?2
?3namespace?Webtest
?4{
?5?/**////?<summary>
?6?///?ReflectTest?的摘要說明。
?7?///?</summary>
?8?public?class?ReflectTest
?9?{
10??public?ReflectTest()
11??{}
12
13??public?string?WriteString(string?s)
14??{
15???return?"歡迎您,"?+?s;
16??}
17
18??/**////?<summary>
19??///?dsajkjflasjdfalksdjfaskfd
20??///?</summary>
21??///?<param?name="s"></param>
22??///?<returns></returns>
23??public?static?string?WriteName(string?s)
24??{
25???return?"歡迎您光臨,"?+?s;
26??}
27
28??public?string?WriteNoPara()
29??{
30???return?"您使用的是無參數方法";
31??}
32?}
33}
34
35
36
2 應用于反射的例子
在ASPNET頁面中加入以下函數:
?2??{
?3???System.Reflection.Assembly?ass;
?4???Type?type?;
?5???object?obj;
?6???try
?7???{
?8????ass?=?System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");
?9????type?=?ass.GetType("Webtest.ReflectTest");//必須使用名稱空間+類名稱
10????System.Reflection.MethodInfo?method?=?type.GetMethod("WriteString");//方法的名稱
11????obj?=?ass.CreateInstance("Webtest.ReflectTest");//必須使用名稱空間+類名稱
12????string?s?=?(string)method.Invoke(obj,new?string[]{"jianglijun"});?//實例方法的調用
13???
14????Response.Write(s+"<br>");
15????method?=?type.GetMethod("WriteName");//方法的名稱
16????s?=?(string)method.Invoke(null,new?string[]{"jianglijun"});?//靜態方法的調用
17????Response.Write(s+"<br>");
18
19????method?=?type.GetMethod("WriteNoPara");//無參數的實例方法
20????s?=?(string)method.Invoke(obj,null);
21????Response.Write(s+"<br>");
22????method?=?null;
23???}
24???catch(Exception?ex)
25???{
26????Response.Write(ex+"<br>");
27???}
28???finally
29???{
30????ass?=?null;
31????type?=?null;
32????obj?=?null;
33???}
34??}
35
轉載于:https://www.cnblogs.com/tuyile006/archive/2007/01/16/621388.html
總結
以上是生活随笔為你收集整理的C#反射实例No.1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET 实践:写入 Cookie
- 下一篇: 一些面试题(JAVA)