System.Reflection 用途 功用

 

1.使用System.Reflection.MethodBase.GetCurrentMethod()、StackTrace用於偵錯


using System.Web;
using System.Reflection;
using System;
using System.Diagnostics;
namespace test
{
    public class MyClass
    {
        public static string GetMethodInfo()
        {
            string showString = "";
            //取得當前方法類別命名空間名稱
            showString += System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "\n";
            //取得當前類別名稱
            showString += System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + "\n";
            //取得當前所使用的方法
            showString += System.Reflection.MethodBase.GetCurrentMethod().Name + "\n";

            StackTrace ss = new StackTrace(true);
            //取得呼叫當前方法之上一層類別(GetFrame(1))的屬性
            MethodBase mb = ss.GetFrame(1).GetMethod();
            //取得呼叫當前方法之上一層類別(父方)的命名空間名稱
            showString += mb.DeclaringType.Namespace + "\n";
            //取得呼叫當前方法之上一層類別(父方)的法類名
            showString += mb.DeclaringType.Name + "\n";
            //取得呼叫當前方法之上一層類別(父方)的法全名
            showString += mb.DeclaringType.FullName + "\n";
            //取得呼叫當前方法之上一層類別(父方)的法名
            showString += mb.Name + "\n";
            return showString;
        }

        static void Main(string[] args)
        {
            Console.WriteLine(GetMethodInfo());
            Console.ReadKey();
        }
    }
}

参考資料:

取得當前使用類別資訊(類別、方法)及呼叫方之資訊

[C#]取得目前程式執行階段的Method Name

 

2.可利用assemblyVersion來讀取程式版號

参考資料:

關於AssemblyVersion的一點小事

使用 AssemblyVersion 預設的自動跳號

 

結論:其實我還不清楚Reflection可以應用在多廣的地方,

但根據我的了解,Reflection主要應用在取得程式基底資訊並加以利用。

参考資料:

Reflection (C#)

System.Reflection Namespace