日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Reflection(反射)

發(fā)布時(shí)間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Reflection(反射) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.反射介紹

反射是.NET中的重要機(jī)制,通過(guò)反射,可以在運(yùn)行時(shí)獲得程序或程序集中每一個(gè)類型(包括類、結(jié)構(gòu)、委托、接口和枚舉等)的成員和成員的信息。

有了反射,即可對(duì)每一個(gè)類型了如指掌。另外我還可以直接創(chuàng)建對(duì)象,即使這個(gè)對(duì)象的類型在編譯時(shí)還不知道。

二.反射的用途

1.使用Assembly定義和加載程序集,加載在程序集清單中列出模塊,以及從此程序集中查找類型并創(chuàng)建該類型的實(shí)例

2.使用Module了解包含模塊的程序集以及模塊中的類等,還可以獲取在模塊上定義的所有全局方法或其他特定的非全局方法

3.使用ConstructorInfo了解構(gòu)造函數(shù)的名稱、參數(shù)、訪問(wèn)修飾符(如pulic 或private)和實(shí)現(xiàn)詳細(xì)信息(如abstract或virtual)等

4.使用MethodInfo了解方法的名稱、返回類型、參數(shù)、訪問(wèn)修飾符(如pulic 或private)和實(shí)現(xiàn)詳細(xì)信息(如abstract或virtual)等

5.使用FiedInfo了解字段的名稱、訪問(wèn)修飾符(如public或private)和實(shí)現(xiàn)詳細(xì)信息(如static)等,并獲取或設(shè)置字段值

6.使用EventInfo了解事件的名稱、事件處理程序數(shù)據(jù)類型、自定義屬性、聲明類型和反射類型等,添加或移除事件處理程序

7.使用PropertyInfo了解屬性的名稱、數(shù)據(jù)類型、聲明類型、反射類型和只讀或可寫(xiě)狀態(tài)等,獲取或設(shè)置屬性值

8.使用ParameterInfo了解參數(shù)的名稱、數(shù)據(jù)類型、是輸入?yún)?shù)還是輸出參數(shù),以及參數(shù)在方法簽名中的位置等

三.反射中主要用到的類介紹

1.System.Reflection.Assembly類

用于訪問(wèn)給定程序集的信息,或者把這個(gè)程序集加載到程序中

?

?

?部分方法介紹:

?

?2.System.Type類?

?System.Type 類對(duì)于反射起著核心的作用。但它是一個(gè)抽象的基類,Type有與每種數(shù)據(jù)類型對(duì)應(yīng)的派生類,

?我們使用這個(gè)派生類的對(duì)象的方法、字段、屬性來(lái)查找有關(guān)該類型的所有信息

?

?Type類的部分屬性:
??????? Name 數(shù)據(jù)類型名
??????? FullName 數(shù)據(jù)類型的完全限定名(包括命名空間名)
??????? Namespace 定義數(shù)據(jù)類型的命名空間名
??????? IsAbstract 指示該類型是否是抽象類型
??????? IsArray?? 指示該類型是否是數(shù)組
??????? IsClass?? 指示該類型是否是類
??????? IsEnum?? 指示該類型是否是枚舉
??????? IsInterface??? 指示該類型是否是接口
??????? IsPublic 指示該類型是否是公有的
??????? IsSealed 指示該類型是否是密封類
??????? IsValueType 指示該類型是否是值類型

??Type類的部分方法介紹:
??????? GetConstructor(), GetConstructors():返回ConstructorInfo類型,用于取得該類的構(gòu)造函數(shù)的信息
??????? GetEvent(), GetEvents():返回EventInfo類型,用于取得該類的事件的信息
??????? GetField(), GetFields():返回FieldInfo類型,用于取得該類的字段(成員變量)的信息
??????? GetInterface(), GetInterfaces():返回InterfaceInfo類型,用于取得該類實(shí)現(xiàn)的接口的信息
??????? GetMember(), GetMembers():返回MemberInfo類型,用于取得該類的所有成員的信息
??????? GetMethod(), GetMethods():返回MethodInfo類型,用于取得該類的方法的信息
??????? GetProperty(), GetProperties():返回PropertyInfo類型,用于取得該類的屬性的信息
? ? ? ?可以調(diào)用這些成員,其方式是調(diào)用Type的InvokeMember()方法,或者調(diào)用MethodInfo, PropertyInfo和其他類的Invoke()方法。?

學(xué)習(xí)可以參考:

https://docs.microsoft.com/zh-cn/dotnet/api/system.reflection.assembly?view=netcore-3.1

https://docs.microsoft.com/zh-cn/dotnet/api/system.type?view=netcore-3.1

?

?

總結(jié)

以上是生活随笔為你收集整理的Reflection(反射)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。