偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C#反射命名空間淺析

開(kāi)發(fā) 后端
C#反射命名空間的常用類是什么呢?我們?cè)诹私釩#反射之后,那么在掌握C#反射命名空間的時(shí)候需要注意什么呢?那么本文就向你介紹這些內(nèi)容。

學(xué)習(xí)C#反射命名空間之前我們來(lái)看看C#反射的概念,反射是一個(gè)運(yùn)行庫(kù)類型發(fā)現(xiàn)的過(guò)程。 通過(guò)反射可以得到一個(gè)給定程序集所包含的所有類型的列表,這個(gè)列表包括給定類型中定義的方法、字段、屬性和事件。也可以動(dòng)態(tài)的發(fā)現(xiàn)一組給定類支持的借口、方法的參數(shù)和其他相關(guān)信息如基類、命名空間、數(shù)據(jù)清單等。

C#反射命名空間詳細(xì)介紹:

1.System.Reflection命名空間內(nèi)的各類型

(1) Assembly通過(guò)它可以加載、了解和操縱一個(gè)程序集

(2) AssemblyName 通過(guò)它可以找到大量隱藏在程序集的身份中的信息,如版本信息、區(qū)域信息等

(3) EventInfo  事件的信息

(4) FieldInfo  字段的信息

(5) MethodInfo  方法的信息

(6) ParameterInfo  參數(shù)的信息

(7) PropertyInfo  屬性的信息

(8) MemberInfo  是抽象基類,為  EventInfo、FieldInfo 、MethodInfo、PropertyInfo等類型定義了公共的行為。

(9) Module 用來(lái)訪問(wèn)帶有多文件程序集的給定模塊  
 
2.System.Type類

System.Type支持的成員可以分為這樣幾類

(1) Is***   用來(lái)檢查一個(gè)類型的元數(shù)據(jù),如IsAbstract、IsClass、IsValueType等等

(2) Get*** 用來(lái)從類型得到指定項(xiàng)目,如GetEvent()得到類型的一個(gè)指定的事件(EventInfo)。 另外,這些方法都有一個(gè)單數(shù)版本和一個(gè)復(fù)數(shù)版本。如GetEvent()對(duì)應(yīng)有一個(gè)復(fù)數(shù)版   本GetEvents(), 該方法返回一個(gè)相關(guān)的EventInfo數(shù)組

(3) FindMembers()   根據(jù)查詢條件返回一個(gè)MemberInfo類型的數(shù)組

(4)GetType()  該靜態(tài)方法根據(jù)一個(gè)字符串名稱返回一個(gè)Type實(shí)例

(5)InvokeMember()  對(duì)給定項(xiàng)目進(jìn)行晚期綁定

3.得到一個(gè)Type類型實(shí)例的三種方法

因?yàn)門ype是一個(gè)抽象類,所以不能直接使用new關(guān)鍵字創(chuàng)建一個(gè)Type對(duì)象

(1)使用System.Object.GetType()

  1. Person pe=new Person();    
  2. //---------定義pe為person類的一個(gè)對(duì)象   
  3. Type t=pe.GetType();  

(2)使用System.Type.GetType()靜態(tài)方法,參數(shù)為類型的完全限定名

  1. Type t=Type.GetType("Entity.Person"); 

該方法被重載,允許指定兩個(gè)布爾類型的參數(shù),一個(gè)用來(lái)控制當(dāng)前類型不能找到時(shí)是否拋出異常,

另一個(gè)用來(lái)指示是否區(qū)分字符串大小寫(xiě) 

  1. Type t=Type.GetType("Entity.Person",false,true); 

注意到傳入的字符串并沒(méi)有包含類型所在的程序集信息,此時(shí)該類型便被認(rèn)為是定義在當(dāng)前執(zhí)行的程序集中的。

要得到一個(gè)外部私有程序集的類型元數(shù)據(jù)時(shí),字符串參數(shù)必須使用類型完全限定名加上類型所在程序集的友好名字

  1. Type t=Type.GetType("Entity.Person","Entity");  
  2. //------"Entity"即為類型所在程序集的友好名字  

嵌套類型:傳入的字符串可以指定一個(gè)+標(biāo)記來(lái)表示一個(gè)嵌套類型,如希望得到一個(gè)嵌套在person類中的枚舉類型City的類型信息,則可以這樣

  1. Type t=Type.GetType("Entity.person+City"); 

(3)使用typeof運(yùn)算符

  1. Type  t=typeof(person); 

三種方法的比較:

使用***種方法必須先建立一個(gè)實(shí)例,而后兩種方法不必先建立實(shí)例。但使用typeof運(yùn)算符仍然需要知道類型的編譯時(shí)信息,而使用System.Type.GetType()靜態(tài)方法不需要知道類型的編譯時(shí)信息,所以是***方法。

C#反射命名空間的基本內(nèi)容和注意事項(xiàng)就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#反射命名空間有所幫助。

【編輯推薦】

  1. C#靜態(tài)方法使用經(jīng)驗(yàn)淺談
  2. C#靜態(tài)方法概念解析實(shí)例
  3. C#靜態(tài)方法與非靜態(tài)方法的比較
  4. C#靜態(tài)方法應(yīng)用實(shí)例詳解
  5. C#反射概念以及實(shí)例詳解
責(zé)任編輯:仲衡 來(lái)源: 博客園
相關(guān)推薦

2009-07-31 18:18:33

Camel命名法C#命名規(guī)范

2009-08-27 15:34:38

C#命名空間

2009-08-12 10:46:54

C#命名空間

2009-08-21 13:34:32

C# System.I

2009-09-11 09:22:14

System.Linq

2009-08-24 10:07:57

C#泛型處理

2009-08-24 16:19:42

C# 泛型方法

2009-09-01 17:17:48

C#命名空間和程序集

2021-03-15 08:18:23

C#反射模塊

2009-08-07 17:25:37

C# SortedLi

2009-08-14 17:45:52

C# ArrayLis

2009-08-17 18:34:50

C# ChangeCo

2009-08-25 17:59:49

C#入門

2009-08-12 15:20:21

C#事件處理

2009-08-17 13:34:02

C#異步操作

2009-08-26 13:07:07

C#交錯(cuò)數(shù)組

2009-08-27 11:43:31

C#語(yǔ)法

2009-08-18 09:24:52

C# Anonymou

2009-08-14 15:23:10

C#使用ErrorPr

2009-08-20 14:45:13

C# Switch語(yǔ)句
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)