Codehighlightingproducedby" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

圖解DotNet框架之五:System.Reflection

系統 1717 0

( 聲明:本系列只想給大家介紹.net框架,并不是語法和類的使用的講解,所以只能概括的描述一下所提到的類,如果有疑問可以到MSDN上面去查 )

這篇文章我們來學習System.Reflection,.net中反射的核心類.先來看圖:

圖解DotNet框架之五:System.Reflection

前面的文章,我們說過.net的元數據可以完整地描述類型,那么通過System.Reflection,可以在運行時發現類型格式,我們來看一下元數據:

源代碼:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> class Class2
{

private int x;
private int y;
public Class2( int a, int b)
{
x
= a;
y
= b;
}

public int Add()
{
return x + y;
}

}

元數據,請看代碼注釋

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> TypeDef# 2 ( 02000003 )
// -------------------------------------------------------
// TypDefName:Class2(02000003)
// Flags:[NestedPrivate][AutoLayout][Class][AnsiClass][BeforeFieldInit](00100003)
// Extends:01000002[TypeRef]System.Object
// EnclosingClass:Test.Class1(02000002)
// Field#1(04000004)
// -------------------------------------------------------
// FieldName:x(04000004) // /字段名
// Flags:[Private](00000001) // 訪問修飾
// CallCnvntn:[FIELD]
// Fieldtype:I4 // 字段類型
//
// Field#2(04000005)
// -------------------------------------------------------
// FieldName:y(04000005)
// Flags:[Private](00000001)
// CallCnvntn:[FIELD]
// Fieldtype:I4
//
// Method#1(06000004)
// -------------------------------------------------------
// MethodName:.ctor(06000004) // /構造函數
// Flags:[Public][HideBySig][ReuseSlot][SpecialName][RTSpecialName][.ctor](00001886) // 訪問修飾
// RVA:0x00002083
// ImplFlags:[IL][Managed](00000000) // CLR托管代碼
// CallCnvntn:[DEFAULT]
// hasThis
// ReturnType:Void // 返回類型
// 2Arguments
// Argument#1:I4
// Argument#2:I4
// 2Parameters // 參數列表
// (1)ParamToken:(08000003)Name:aflags:[none](00000000) // 參數類型
// (2)ParamToken:(08000004)Name:bflags:[none](00000000)
//
// Method#2(06000005)
// -------------------------------------------------------
// MethodName:Add(06000005)方法名
// Flags:[Public][HideBySig][ReuseSlot](00000086) // 訪問修飾
// RVA:0x00002099
// ImplFlags:[IL][Managed](00000000)
// CallCnvntn:[DEFAULT]
// hasThis
// ReturnType:I4 // 返回類型
// Noarguments.
//

我們看到在元數據種非常詳細的定義了一個類中的任何成員,還包括了程序集所引用的其他程序集的信息

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> AssemblyRef# 1 ( 23000001 )
// -------------------------------------------------------
// Token:0x23000001
// PublicKeyorToken:b77a5c561934e089
// Name:mscorlib
// Version:2.0.0.0
// MajorVersion:0x00000002
// MinorVersion:0x00000000
// BuildNumber:0x00000000
// RevisionNumber:0x00000000
// Locale:<null>
// HashValueBlob:
// Flags:[none](00000000)
//
//

OK,了解了元數據,我們現在來看看上面圖中,那些類的基本功能,.NetFrameWork庫類的層次程序集包含模塊,模塊包含類型,類型又包含成員(方法,屬性,字段,事件等)。

1.Assembly:主要是加載和操縱一個程序集.

2.ParameterInfo:該類保存給定參數的信息,也就是說方法的參數,可以用該類來操作.

3.Module:訪問帶有多文件程序集的給定模塊,可以認為就是命名空間.

4.MemberInfo:該類是抽象基類,為他的子類定義了公共的行為.如MemberTypes,MemberName等.而他的子類則分別是方法,屬性,字段,事件等信息的具體實現.

那么這些類如何來完成類型的反射呢?

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> Assemblyasm = Assembly.Load( " Test " ); // dll的名稱
Typet = asm.GetType( " Test.Class2 " ); // 類的完全命名
object obj = Activator.CreateInstance(t); // 創建Class2的實例
MethodInfomi = t.GetMethod( " Add " ); // 獲取Class2中Add方法的信息.
string s = ( string )mi.Invoke(obj, null ); // 執行方法,需要參數1:Class2的實例,2:方法的參數列表.

FieldInfopi
= t.GetField( " x " ); // 獲取字段信息
pi.GetValue(obj); // 得到字段值

事件和屬性的反射調用,同上述代碼差不多,不再贅述.上面的代碼中我們使用了Type這個類型,這里做一下簡單的介紹

System.Type定義了大量的成員,可以用來檢查一個類型的元數據,如GetMethod,GetFields等方法,基本上一個類型的所有信息都可以得到,很好很強大.呵呵.

圖解DotNet框架之五:System.Reflection


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91免费观看 | 国产精品高清在线 | 亚洲毛片在线观看 | 欧美成人性生活 | 欧美福利在线 | 国产在线精品香蕉综合网一区 | 另类五月天| 亚洲高清在线播放 | 天天爱夜夜爽 | 国产欧美日韩亚洲精品区2345 | 天天插天天爽 | 国产日韩一区在线精品欧美玲 | 免费中文字幕视频 | 欧美喷潮久久久xxxxx | 亚洲国产精品热久久2022 | 四虎国产视频 | 久久香蕉国产线看观看网站 | 亚洲九九| 国产精品中文字幕在线观看 | 亚洲黄色网址 | 做羞羞视频 | 亚洲精品第一国产综合高清 | 成人瑟瑟| 国产精品久久99 | 亚洲日韩色图 | 国产精品免费大片一区二区 | 欧美日日 | 欧美在线精品一区二区在线观看 | 68久久久久欧美精品观看 | 奇米影视第四色av首页 | 啪啪网页 | 91视频专区| 亚洲毛片大全 | 日韩免费一区二区 | 91在线亚洲精品专区 | 午夜国产电影 | 欧美在线精品一区二区在线观看 | av在线播放亚洲 | 午夜剧场在线免费观看 | 国产综合在线视频 | av中文字幕在线观看 |