91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在ASP.NET中調用方法名

發布時間:2020-12-23 16:40:28 來源:億速云 閱讀:140 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在ASP.NET中調用方法名,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在寫記錄日志功能時,需要記錄日志調用方所在的模塊名、命名空間名、類名以及方法名,想到使用的是反射(涉及到反射請注意性能),但具體是哪一塊兒還不了解,于是搜索,整理如下:

 
需要添加相應的命名空間:

復制代碼 代碼如下:

using System;
using System.Diagnostics;
using System.Reflection;


如果僅是獲取當前方法名,可以使用如下代碼:

復制代碼 代碼如下:

public static void WriteSysLog(int level, string content)
{
    MethodBase mb = MethodBase.GetCurrentMethod();
    string systemModule = Environment.NewLine;
    systemModule += "模塊名:" + mb.Module.ToString() + Environment.NewLine;
    systemModule += "命名空間名:" + mb.ReflectedType.Namespace + Environment.NewLine;
    //完全限定名,包括命名空間
    systemModule += "類名:" + mb.ReflectedType.FullName + Environment.NewLine;
    systemModule += "方法名:" + mb.Name;
 
    Console.WriteLine("LogDate: {0}{1}Level: {2}{1}systemModule: {3}{1}content: {4}", DateTime.Now, Environment.NewLine, level, systemModule, content);
    Console.WriteLine();
}

但一般情況下是獲取此記錄日志方法的調用方,因此需要使用下面的代碼:(此方法僅為演示)

復制代碼 代碼如下:

public static void WriteSysLog(string content)
{
    const int level = 1000;
 
    StackTrace ss = new StackTrace(true);
    //index:0為本身的方法;1為調用方法;2為其上上層,依次類推
    MethodBase mb = ss.GetFrame(1).GetMethod();
 
    StackFrame[] sfs = ss.GetFrames();
    string systemModule = Environment.NewLine;
    systemModule += "模塊名:" + mb.Module.ToString() + Environment.NewLine;
    systemModule += "命名空間名:" + mb.DeclaringType.Namespace + Environment.NewLine;
    //僅有類名
    systemModule += "類名:" + mb.DeclaringType.Name + Environment.NewLine;
    systemModule += "方法名:" + mb.Name;
 
    Console.WriteLine("LogDate: {0}{1}Level: {2}{1}systemModule: {3}{1}content: {4}", DateTime.Now, Environment.NewLine, level, systemModule, content);
    Console.WriteLine();
}

對于這一點兒,感覺有意思的是Main的調用方

復制代碼 代碼如下:

System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)


 
通過

復制代碼 代碼如下:

StackTrace ss = new StackTrace(true);
StackFrame[] sfs = ss.GetFrames();


可以得知.NET程序的執行順序:

復制代碼 代碼如下:

System.Threading.ThreadHelper.ThreadStart()
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)


然后進入方法Main中。

另外,從 MethodBase 類 還可以獲取很多其他屬性,可以自行定位到System.Reflection.MethodBase 查看。
 
使用反射可以遍歷獲得類的所有屬性名,方法名,成員名,其中一個有趣的小例子:通過反射將變量值轉為變量名本身。

上述就是小編為大家分享的怎么在ASP.NET中調用方法名了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昆明市| 江门市| 普定县| 剑阁县| 上虞市| 湘潭市| 洛扎县| 云龙县| 平定县| 海兴县| 临海市| 塔河县| 周口市| 新密市| 阿尔山市| 关岭| 桂林市| 洪泽县| 曲松县| 邳州市| 弥勒县| 永泰县| 佛坪县| 双辽市| 红安县| 渭源县| 莲花县| 邵阳市| 天峨县| 会宁县| 菏泽市| 新津县| 夏河县| 同德县| 额尔古纳市| 永靖县| 南岸区| 上犹县| 隆化县| 黄平县| 麻江县|