中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么在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

东源县| 贵港市| 安康市| 驻马店市| 区。| 琼中| 新安县| 中卫市| 营口市| 德清县| 连城县| 武冈市| 弋阳县| 明光市| 盖州市| 塔河县| 上栗县| 通道| 通城县| 五大连池市| 沁水县| 商都县| 于田县| 孝昌县| 涞水县| 沙洋县| 宁强县| 嵊州市| 青岛市| 扶绥县| 永胜县| 廊坊市| 武强县| 康平县| 兴城市| 黄石市| 桃江县| 新密市| 贵溪市| 忻州市| 晴隆县|