• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    .net的reflection (2)

    發布: 2007-6-30 18:56 | 作者: admin | 來源: | 查看: 16次 | 進入軟件測試論壇討論

    領測軟件測試網 一旦得到類對象,上表中所列的方法就能被叫來調用reflaction.第一個例子將檢查在CSharpReflectionSamples.Reflect類中的得到方法的信息。第一塊代碼用來定義類中的每個方法的名字,第二塊代碼將闡述得到方法信息。向下面所展示的,我們將用一個數組來保存用GetMethod()方法返回的方法信息。MethodInfo類包含信息為方法的名字,不管是否是虛擬的,它都是可見的,等等。

    namespace CSharpReflectionSamples
    {
    using System;
    using System.Reflection;

    /// <summary>
    /// Summary description for Client.
    /// </summary>
    public class Client
    {
    public static void Main()
    {
    // the typeof operator and the GetType method
    // both return a @#Type@# object.
    Type type1 = typeof(Reflect);
    Reflect objTest = new Reflect(0);
    Type type2 = objTest.GetType();

    Console.WriteLine("Type of objTest is {0}", type2);
    Console.WriteLine();
    // pause
    Console.ReadLine();

    // reflect method information
    MethodInfo[] minfo = type1.GetMethods();
    // iterate through methods
    foreach (MethodInfo m in minfo)
    {
    Console.WriteLine(m);
    }
    Console.WriteLine();
    }
    }
    }

    下一個例子將展示動態得到對象有可能接觸的每個構造器的信息。類似與上面的例子,我們將返回一個包含每個構造器的信息ConstructorInfo對象。

    namespace CSharpReflectionSamples
    {
    using System;
    using System.Reflection;

    /// <summary>
    /// Summary description for Client.
    /// </summary>
    public class Client
    {
    public static void Main()
    {
    // the typeof operator and the GetType method
    // both return a @#Type@# object.
    Type type1 = typeof(Reflect);
    Reflect objTest = new Reflect(0);
    Type type2 = objTest.GetType();

    Console.WriteLine("Type of objTest is {0}", type2);
    Console.WriteLine();
    // pause
    Console.ReadLine();

    // reflect constructors
    ConstructorInfo[] cinfo = type1.GetConstructors();
    // iterate through constructors
    foreach (ConstructorInfo c in cinfo)
    {
    Console.WriteLine(c);
    }
    }
    }
    }

    最后一部分,也許是reflection名字空間中最激動人心的部分,是在運行時動態調用類方法。有兩種方法,首先,我們將建立一個數組來存儲參數,這些參數被構造器用來建造對象。第二,一個System.Object對象將對抗CreateInstance方法的對象。以得到想得到對象的例子。最后,當我們有了對象的資料,我們能夠調用任何使用MethodParm數組的方法。下面是代碼:

    namespace CSharpReflectionSamples
    {
    using System;
    using System.Reflection;

    /// <summary>
    /// Summary description for Client.
    /// </summary>
    public class Client
    {
    public static void Main()
    {
    // the typeof operator and the GetType method
    // both return a @#Type@# object.
    Type type1 = typeof(Reflect);
    Reflect objTest = new Reflect(0);
    Type type2 = objTest.GetType();



    // dynamic creation and invocation
    // instantiate the Reflect object, passing
    // a value of 1 to the constructor
    object[] oConstructParms = new object[] {1};
    object obj = Activator.CreateInstance(type1, oConstructParms);
    // invoke method of reflect object
    object[] oMethodParms = new object[] {17};
    int intResult = (int)type1.InvokeMember("AMethod", BindingFlags.Default |
    BindingFlags.InvokeMethod, null, obj, oMethodParms);
    Console.WriteLine("Result of calling AMethod on {0} is {1}",
    type1.Name, intResult);
    // pause
    Console.ReadLine();
    }
    }
    }


    這篇文章闡述了.net Reflaction的基礎,在下一部分,我將和大家討論進一步的話題,比如,動態發布中間語言,旗幟綁定,和中間語言原則。


    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>