您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關C#中怎么反射命名空間,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
C#反射命名空間詳細介紹:
1.System.Reflection命名空間內的各類型
(1) Assembly通過它可以加載、了解和操縱一個程序集
(2) AssemblyName 通過它可以找到大量隱藏在程序集的身份中的信息,如版本信息、區域信息等
(3) EventInfo 事件的信息
(4) FieldInfo 字段的信息
(5) MethodInfo 方法的信息
(6) ParameterInfo 參數的信息
(7) PropertyInfo 屬性的信息
(8) MemberInfo 是抽象基類,為 EventInfo、FieldInfo 、MethodInfo、PropertyInfo等類型定義了公共的行為。
(9) Module 用來訪問帶有多文件程序集的給定模塊
2.System.Type類
System.Type支持的成員可以分為這樣幾類
(1) Is*** 用來檢查一個類型的元數據,如IsAbstract、IsClass、IsValueType等等
(2) Get*** 用來從類型得到指定項目,如GetEvent()得到類型的一個指定的事件(EventInfo)。 另外,這些方法都有一個單數版本和一個復數版本。如GetEvent()對應有一個復數版 本GetEvents(), 該方法返回一個相關的EventInfo數組
(3) FindMembers() 根據查詢條件返回一個MemberInfo類型的數組
(4)GetType() 該靜態方法根據一個字符串名稱返回一個Type實例
(5)InvokeMember() 對給定項目進行晚期綁定
3.得到一個Type類型實例的三種方法
因為Type是一個抽象類,所以不能直接使用new關鍵字創建一個Type對象
(1)使用System.Object.GetType()
Person pe=new Person(); //---------定義pe為person類的一個對象 Type t=pe.GetType();
(2)使用System.Type.GetType()靜態方法,參數為類型的完全限定名
Type t=Type.GetType("Entity.Person");
該方法被重載,允許指定兩個布爾類型的參數,一個用來控制當前類型不能找到時是否拋出異常,
另一個用來指示是否區分字符串大小寫
Type t=Type.GetType("Entity.Person",false,true);
注意到傳入的字符串并沒有包含類型所在的程序集信息,此時該類型便被認為是定義在當前執行的程序集中的。
要得到一個外部私有程序集的類型元數據時,字符串參數必須使用類型完全限定名加上類型所在程序集的友好名字
Type t=Type.GetType("Entity.Person","Entity"); //------"Entity"即為類型所在程序集的友好名字
嵌套類型:傳入的字符串可以指定一個+標記來表示一個嵌套類型,如希望得到一個嵌套在person類中的枚舉類型City的類型信息,則可以這樣
Type t=Type.GetType("Entity.person+City");
(3)使用typeof運算符
Type t=typeof(person);
三種方法的比較:
使用***種方法必須先建立一個實例,而后兩種方法不必先建立實例。但使用typeof運算符仍然需要知道類型的編譯時信息,而使用System.Type.GetType()靜態方法不需要知道類型的編譯時信息,所以是***方法。
關于C#中怎么反射命名空間就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。