Reflection,中文翻譯為 反射。

這是.Net中獲取 運行時類型信息 的方式,.Net的應用程序由幾個部分:'程序集(Assembly)’、'模塊(Module)’、'類型(class)’組成,而反射提供 " /> 亚洲综合久久一本伊伊区,红色机尾快播,亚洲欧美综合乱码精品成人网

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

C# 參考:反射 -- 學習筆記整理,概念與應用

1. 什么是反射

Reflection,中文翻譯為 反射。
   
     這是.NET中獲取 運行時類型信息 的方式,.NET應用程序由幾個部分:'程序集(Assembly)’、'模塊(Module)’、'類型(class)’組成,而反射提供一種編程的方式,讓程序員可以在程序運行期獲得這幾個組成部分的相關信息,例如:
     通常程序員面試題,有這樣關于反射的解釋:反射可以動態地創建類型的實例,還可以將類型綁定到現有對象,或從現有對象中獲取類型。然后,可以調用類型的方法或訪問其字段和屬性。 
     Assembly類可以獲得正在運行的裝配件信息,也可以動態的加載裝配件,以及在裝配件中查找類型信息,并創建該類型的實例。
Type類可以獲得對象的類型信息,此信息包含對象的所有要素:方法、構造器、屬性等等,通過Type類可以得到這些要素的信息,并且調用之。
MethodInfo包含方法的信息,通過這個類可以得到方法的名稱、參數、返回值等,并且可以調用之。
    諸如此類,還有FieldInfo、PropertyInfo、ConstructorInfo、EventInfo等等,這些類都包含在System.Reflection命名空間。

2. 命名空間與裝配件的關系

     很多人對這個概念可能還是很不清晰,對于合格的.NET程序員,有必要對這點進行澄清。
     命名空間類似與Java的包,但又不完全等同,因為Java的包必須按照目錄結構來放置,命名空間則不需要。

     核心語:裝配件是.NET應用程序執行的最小單位,編譯出來的.dll、.exe都是裝配件。

     裝配件和命名空間的關系不是一一對應,也不互相包含,一個裝配件里面可以有多個命名空間,一個命名空間也可以在多個裝配件中存在,這樣說可能有點模糊,舉個例子:
裝配件A:

namespace N1
{
   
public class AC1 {…}
   
public class AC2 {…}
}

namespace N2
{
   
public class AC3 {…}
   
public class AC4{…}
}
這個接口中包含:
(1)一個DataBaseType屬性,這個屬性返回擴展的或是要支持的數據庫管理系統的標識或描述,這樣就可以知道是使用那個數據庫系統,根據Web.config提取相關了(不明白就往下走);
(2)第一個方法(Insert(OrderInfo order))(這里我定義了一個OrderInfo類(實體),這個類(實體對象)提供對數據的封裝,在這里,簡單地說就是將訂單的相關信息(見實體類中定義的屬性),封裝在該實體類創建的實體對象中,作為該插入(Insert)新紀錄的參數。
(3)第二個方法(GetOrder(int orderId)) 這個方法由提供的訂單Id(orderId)從數據庫中,讀取相關數據,記錄在創建的OrderInfo實體對象中,通過該實體對象的屬性可以讀取相關信息,如訂單生成日期,金額,發送地址等;

      那么我規定所有的數據訪問邏輯(基于基于某一數據庫系統)都必須派生一個數據庫訪問層,并且實現這個接口,在定義的方法中返回處理處理Code對象,并且可以指定,數據庫類型的描述(如DBMS Name)。
      這樣的話,我就不需要在開發系統時知道將來需要采用的數據系統類型(是采用Ms SqlServer 呢?還是采用Oracle呢?等等),只需要從配置文件中獲取現在所指定的數據庫系統的描述,就可以動態的創建對象,將其轉換為IOrder接口來使用。

這就是反射的一個典型的應用,在.NET PetShop 4.0 中有重要使用這一方式。

 4.通過一個Demo演示,一個對象的實例泄漏的秘密(這是我從別人那看來的)

 class Program
    
{
        
static void Main(string[] args)
        
{
        }

    }


    
class classA
    
{
        
internal int iNumberA = 100;
        
public int iNumberB = 200;
        
private int property;

        
public int Property
        
{
            
get {
                
return property;
            }

            
set {
                property 
= value;
            }

        }

        
public void FunA()
        
{
            Console.WriteLine(
"classA is a Fuction! ");
        }

    }


    
class classB
    
{
 
    }


    
class TestObjectType
    
{
        
internal void FucType(object A)
        
{
            Type objType 
= A.GetType();

            Assembly objassembly 
= objType.Assembly;
            Type[] types 
= objassembly.GetTypes();
            
foreach (Type type in types)
            
{
                Console.WriteLine(
"類名 " + type.FullName);

                
// 獲取類型的結構信息
                ConstructorInfo[] myConstructor = type.GetConstructors();
                Show(myConstructor);

                
// 獲取類型的字段信息
                FieldInfo[] myField = type.GetFields();
                Show(myField);

                
// 獲取方法的方法
                MethodInfo[] myMethod = type.GetMethods();
                Show(myMethod);

                
// 獲取屬性的方法
                PropertyInfo[] myProperty = type.GetProperties();
                Show(myProperty);

                
// 獲取事件信息,這個Demo沒有事件,所以就不寫了 EventInfo
            }
            Console.ReadLine();
        }


        
// 顯示數組的基本信息
        private void Show(object[] myObject)
        
{
            
foreach (object var in myObject)
            
{
                Console.WriteLine(var.ToString());
            }

            Console.WriteLine(
"-------------------");
        }

    }

NET技術C# 參考:反射 -- 學習筆記整理,概念與應用,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 天天啪免费视频在线看 | 国产精品成人自拍 | 久草在线福利视频在线播放 | 久久久久影视 | 国产精品卡1卡2卡三卡四 | 国产亚洲精品成人AV久久 | 老司机亚洲精品影院在线观看 | 一个人免费视频在线观看高清版 | 欧美精品九九99久久在免费线 | 九九热视频这里只有精 | 国产亚洲精品久久久久久禁果TV | 24小时日本高清免费看 | 日韩一级精品久久久久 | 久久综合伊人 magnet | 成年人在线视频免费观看 | 穿着丝袜被男生强行啪啪 | 国产乱子影视频上线免费观看 | XXX国产麻豆HD真实乱 | 日本双渗透 | 胸大的姑娘中文字幕视频 | 午夜国产视频 | 国产亚洲精品久久孕妇呦呦你懂 | 在线视频 中文字幕 | 中国人泡妞xxxxxxxx19 | 亚洲精品国偷拍自产在线观看蜜臀 | 蜜芽在线播放免费人成日韩视频 | 美女拉开腿让男生桶到爽 | 午夜一个人在线观看完整版 | 久草热8精品视频在线观看 久草青青在线 | 被cao的奶水直喷高H | 二级特黄绝大片免费视频大片 | 久久免费大片 | 欧美日韩亚洲第一区在线 | 国产真实强被迫伦姧女在线观看 | 国产婷婷综合在线视频中文 | 日韩精品a在线视频 | 农民工老头在出租屋嫖老熟女 | 91看片淫黄大片.在线天堂 | 永久午夜福利视频一区在线观看 | 在线高清电影理论片4399 | 性色无码AV久久蜜臀 |