這篇文章將為大家詳細(xì)講解有關(guān)C#中怎么反射命名空間,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),網(wǎng)站設(shè)計(jì),綿陽(yáng)服務(wù)器托管等一站式綜合服務(wù)型公司,專(zhuān)業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)建站。
C#反射命名空間詳細(xì)介紹:
1.System.Reflection命名空間內(nèi)的各類(lèi)型
(1) Assembly通過(guò)它可以加載、了解和操縱一個(gè)程序集
(2) AssemblyName 通過(guò)它可以找到大量隱藏在程序集的身份中的信息,如版本信息、區(qū)域信息等
(3) EventInfo 事件的信息
(4) FieldInfo 字段的信息
(5) MethodInfo 方法的信息
(6) ParameterInfo 參數(shù)的信息
(7) PropertyInfo 屬性的信息
(8) MemberInfo 是抽象基類(lèi),為 EventInfo、FieldInfo 、MethodInfo、PropertyInfo等類(lèi)型定義了公共的行為。
(9) Module 用來(lái)訪問(wèn)帶有多文件程序集的給定模塊
2.System.Type類(lèi)
System.Type支持的成員可以分為這樣幾類(lèi)
(1) Is*** 用來(lái)檢查一個(gè)類(lèi)型的元數(shù)據(jù),如IsAbstract、IsClass、IsValueType等等
(2) Get*** 用來(lái)從類(lèi)型得到指定項(xiàng)目,如GetEvent()得到類(lèi)型的一個(gè)指定的事件(EventInfo)。 另外,這些方法都有一個(gè)單數(shù)版本和一個(gè)復(fù)數(shù)版本。如GetEvent()對(duì)應(yīng)有一個(gè)復(fù)數(shù)版 本GetEvents(), 該方法返回一個(gè)相關(guān)的EventInfo數(shù)組
(3) FindMembers() 根據(jù)查詢(xún)條件返回一個(gè)MemberInfo類(lèi)型的數(shù)組
(4)GetType() 該靜態(tài)方法根據(jù)一個(gè)字符串名稱(chēng)返回一個(gè)Type實(shí)例
(5)InvokeMember() 對(duì)給定項(xiàng)目進(jìn)行晚期綁定
3.得到一個(gè)Type類(lèi)型實(shí)例的三種方法
因?yàn)門(mén)ype是一個(gè)抽象類(lèi),所以不能直接使用new關(guān)鍵字創(chuàng)建一個(gè)Type對(duì)象
(1)使用System.Object.GetType()
Person pe=new Person(); //---------定義pe為person類(lèi)的一個(gè)對(duì)象 Type t=pe.GetType();
(2)使用System.Type.GetType()靜態(tài)方法,參數(shù)為類(lèi)型的完全限定名
Type t=Type.GetType("Entity.Person");
該方法被重載,允許指定兩個(gè)布爾類(lèi)型的參數(shù),一個(gè)用來(lái)控制當(dāng)前類(lèi)型不能找到時(shí)是否拋出異常,
另一個(gè)用來(lái)指示是否區(qū)分字符串大小寫(xiě)
Type t=Type.GetType("Entity.Person",false,true);
注意到傳入的字符串并沒(méi)有包含類(lèi)型所在的程序集信息,此時(shí)該類(lèi)型便被認(rèn)為是定義在當(dāng)前執(zhí)行的程序集中的。
要得到一個(gè)外部私有程序集的類(lèi)型元數(shù)據(jù)時(shí),字符串參數(shù)必須使用類(lèi)型完全限定名加上類(lèi)型所在程序集的友好名字
Type t=Type.GetType("Entity.Person","Entity"); //------"Entity"即為類(lèi)型所在程序集的友好名字
嵌套類(lèi)型:傳入的字符串可以指定一個(gè)+標(biāo)記來(lái)表示一個(gè)嵌套類(lèi)型,如希望得到一個(gè)嵌套在person類(lèi)中的枚舉類(lèi)型City的類(lèi)型信息,則可以這樣
Type t=Type.GetType("Entity.person+City");
(3)使用typeof運(yùn)算符
Type t=typeof(person);
三種方法的比較:
使用***種方法必須先建立一個(gè)實(shí)例,而后兩種方法不必先建立實(shí)例。但使用typeof運(yùn)算符仍然需要知道類(lèi)型的編譯時(shí)信息,而使用System.Type.GetType()靜態(tài)方法不需要知道類(lèi)型的編譯時(shí)信息,所以是***方法。
關(guān)于C#中怎么反射命名空間就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
當(dāng)前標(biāo)題:C#中怎么反射命名空間
本文URL:http://m.rwnh.cn/article6/pgspog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、App設(shè)計(jì)、App開(kāi)發(fā)、、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)