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條評論
主站蜘蛛池模板: 成年人国产网站 | 国产精品国产三级国产aⅴ入口 | 在线观看亚洲专区 | 68久久久久欧美精品观看 | 欧美日韩福利视频 | 日本高清视频在线播放 | 日韩欧美视频一区 | 日韩欧美在线视频播放 | 国产欧美一区二区三区在线看 | 美女在线视频网站 | 日韩精品a在线视频 | 天天夜夜久久 | 一区二区三区国产免费 | 欧美成人a级在线视频 | 欧美特黄aaaaaaaa大片 | 香港三级日本三级韩国三级韩 | 亚洲精品国产偷自在线观看 | 色哟哟哟在线精品观看视频 | 色黄视频免费观看 | 五月天婷婷网站 | 成人午夜视频免费 | 亚洲一区二区三 | 91免费国产精品 | 草的爽免费视频 | 精品一区二区三区免费视频 | 天天干天天操 | 精品久久久久一区二区国产 | 日韩在线免费看网站 | 精品久久香蕉国产线看观看亚洲 | 欧美色性视频 | 欧美黄色大片在线观看 | 婷婷色九月综合激情丁香 | 欧美激情久久久 | 亚欧在线一线 | 日本三级带日本三级带黄国产 | 在线观看国产视频 | 色八影院| 在线观看免费国产视频 | 精品久久久爽爽久久久AV | 精品欧美一区二区在线观看欧美熟 | a级毛片高清免费视频 |