婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET中實現獲取調用方法名

ASP.NET中實現獲取調用方法名

熱門標簽:百度地圖怎樣做地圖標注 征途美甲店地圖標注 昆明語音電銷機器人價格 太原400電話上門辦理 浦發電話機器人提醒還款 騰訊地圖標注手機 400電話如何申請取消 柳州電銷機器人公司 電銷語音機器人型號參數

本文實例講述了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程序設計有所幫助。

您可能感興趣的文章:
  • asp.net c# 調用百度pai實現在線翻譯,英文轉中文
  • ASP.NET 調用百度搜索引擎的代碼
  • ASP.NET中MVC使用AJAX調用JsonResult方法并返回自定義錯誤信息
  • Winform實現調用asp.net數據接口實例
  • asp.net中IDataParameter調用存儲過程的實現方法
  • 使用asp.net調用谷歌地圖api示例
  • asp.net調用飛信免費發短信(測試有效)
  • Asp.NET調用百度翻譯的方法

標簽:張家界 蘭州 陽泉 天門 新疆 白山 德陽 江蘇

巨人網絡通訊聲明:本文標題《ASP.NET中實現獲取調用方法名》,本文關鍵詞  ASP.NET,中,實現,獲取,調用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET中實現獲取調用方法名》相關的同類信息!
  • 本頁收集關于ASP.NET中實現獲取調用方法名的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 顺昌县| 信宜市| 高要市| 泸定县| 曲周县| 沂南县| 象山县| 普格县| 射阳县| 桃园市| 昭苏县| 玉门市| 冀州市| 定结县| 两当县| 广德县| 宜宾县| 稻城县| 延寿县| 慈利县| 亳州市| 高安市| 岑巩县| 宁陵县| 昆山市| 九寨沟县| 湖州市| 阿坝县| 云阳县| 习水县| 临汾市| 什邡市| 屏东市| 论坛| 柞水县| 武宁县| 陆河县| 达孜县| 崇礼县| 桃江县| 轮台县|