C#反射獲取對象屬性字段

C# 反射(Reflection)

反射指程序可以訪問、檢測和修改它本身狀態或行爲的一種能力。

程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。

您可以使用反射動態地創建類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。然後,可以調用類型的方法或訪問其字段和屬性。

優缺點

優點:

  • 1、反射提高了程序的靈活性和擴展性。
  • 2、降低耦合性,提高自適應能力。
  • 3、它允許程序創建和控制任何類的對象,無需提前硬編碼目標類。

缺點:

  • 1、性能問題:使用反射基本上是一種解釋操作,用於字段和方法接入時要遠慢於直接代碼。因此反射機制主要應用在對靈活性和拓展性要求很高的系統框架上,普通程序不建議使用。
  • 2、使用反射會模糊程序內部邏輯;程序員希望在源代碼中看到程序的邏輯,反射卻繞過了源代碼的技術,因而會帶來維護的問題,反射代碼比相應的直接代碼更復雜。

反射(Reflection)的用途

反射(Reflection)有下列用途:

  • 它允許在運行時查看特性(attribute)信息。
  • 它允許審查集合中的各種類型,以及實例化這些類型。
  • 它允許延遲綁定的方法和屬性(property)。
  • 它允許在運行時創建新類型,然後使用這些類型執行一些任務。

 

Type類,是一個用來存儲類型的特性和信息的類。對於程序中的每一個類型,都會有他自己的類信息,而根據Type提供的書信和方法獲得這個類型的一切信息,包括字段,屬性,事件,參數,構造函數等。

首先生成Type對象:

 Type type = typeof(Test);
 
 Test test= new Test();
 Type type2 = test.GetType();

 

獲取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章