Reflection,中文翻譯為 反射。

這是.Net中獲取 運(yùn)行時(shí)類型信息 的方式,.Net的應(yīng)用程序由幾個(gè)部分:'程序集(Assembly)’、'模塊(Module)’、'類型(class)’組成,而反射提供 " /> 亚洲人美女肛交真人全程,暖暖 免费 高清 日本视频5,国产 交换 丝雨 巅峰

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

C# 參考:反射 -- 學(xué)習(xí)筆記整理,概念與應(yīng)用

1. 什么是反射

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

2. 命名空間與裝配件的關(guān)系

     很多人對(duì)這個(gè)概念可能還是很不清晰,對(duì)于合格的.NET程序員,有必要對(duì)這點(diǎn)進(jìn)行澄清。
     命名空間類似與Java的包,但又不完全等同,因?yàn)?a href=/itjie/Javajishu/ target=_blank class=infotextkey>Java的包必須按照目錄結(jié)構(gòu)來放置,命名空間則不需要。

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

     裝配件和命名空間的關(guān)系不是一一對(duì)應(yīng),也不互相包含,一個(gè)裝配件里面可以有多個(gè)命名空間,一個(gè)命名空間也可以在多個(gè)裝配件中存在,這樣說可能有點(diǎn)模糊,舉個(gè)例子:
裝配件A:

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

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

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

這就是反射的一個(gè)典型的應(yīng)用,在.NET PetShop 4.0 中有重要使用這一方式。

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

 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);

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

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

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

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

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


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

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

    }

NET技術(shù)C# 參考:反射 -- 學(xué)習(xí)筆記整理,概念與應(yīng)用,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美激情性AAAAA片欧美 | 久久伊人免费 | 热综合一本伊人久久精品 | 免费看黄色一级 | 无限资源日本2019版免费 | 国产精品大全国产精品 | 成人片在线播放 | 日日碰狠狠躁久久躁综合网 | 涩涩涩涩爱网站 | 翁止熄痒禁伦短文合集免费视频 | 国产精品久久久久久人妻精品蜜桃 | 青春草国产成人精品久久 | 2021精品国产综合久久 | 翁熄性放纵交换01 | 免费可以看污动画软件 | 欧美亚洲日韩国码在线观看 | 星空无限传媒视频在线观看视频 | 男同志vdieos免费 | 忘忧草在线影院WWW日本动漫 | 日本无吗高清 | 一本道久在线综合色色 | 国精产品一区二区三区 | 一级毛片免费在线播放 | 给我免费播放片bd国语 | A级毛片无码久久精品免费 a级毛片黄免费a级毛片 | 久久国产精品免费A片蜜芽 久久国产精品萌白酱免费 久久国产精品麻豆AV影视 | 交换年轻夫妇HD中文字幕 | 欧美精品AV一区二区无码 | 三级网站视频在线观看 | 精品国产原创在线观看视频 | 秋霞电影院兔费理论84MB | 一个人免费观看HD完整版 | 久艾草在线精品视频在线观看 | 亚洲精品不卡在线 | 大香网伊人久久综合观看 | 5278欧美一区二区三区 | 免费高清国产 | 日韩精品无码久久一区二区三 | 国产精品久久一区二区三区蜜桃 | 少妇伦子伦情品无吗 | 国产午夜人成在线视频麻豆 |