最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET中實(shí)現(xiàn)獲取調(diào)用方法名

 更新時(shí)間:2014年12月04日 08:53:24   投稿:shichen2014  
這篇文章主要介紹了ASP.NET中實(shí)現(xiàn)獲取調(diào)用方法名的技巧,較為詳細(xì)的講述了相關(guān)的命名空間的調(diào)用及語(yǔ)句執(zhí)行順序,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了ASP.NET中實(shí)現(xiàn)獲取調(diào)用方法名的技巧。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

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

 
需要添加相應(yīng)的命名空間:

復(fù)制代碼 代碼如下:
using System;
using System.Diagnostics;
using System.Reflection;

如果僅是獲取當(dāng)前方法名,可以使用如下代碼:
復(fù)制代碼 代碼如下:
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 += "類(lèi)名:" + 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();
}

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

復(fù)制代碼 代碼如下:
public static void WriteSysLog(string content)
{
    const int level = 1000;
 
    StackTrace ss = new StackTrace(true);
    //index:0為本身的方法;1為調(diào)用方法;2為其上上層,依次類(lèi)推
    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;
    //僅有類(lèi)名
    systemModule += "類(lèi)名:" + 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();
}

對(duì)于這一點(diǎn)兒,感覺(jué)有意思的是Main的調(diào)用方

復(fù)制代碼 代碼如下:
System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)

 
通過(guò)
復(fù)制代碼 代碼如下:
StackTrace ss = new StackTrace(true);
StackFrame[] sfs = ss.GetFrames();

可以得知.NET程序的執(zhí)行順序:
復(fù)制代碼 代碼如下:
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)

然后進(jìn)入方法Main中。

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

希望本文所述對(duì)大家的asp.net程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • asp.net SqlDataAdapter對(duì)象使用札記

    asp.net SqlDataAdapter對(duì)象使用札記

    如果 DataAdapter 遇到多個(gè)結(jié)果集,它將在 DataSet 中創(chuàng)建多個(gè)表。將向這些表提供遞增的默認(rèn)名稱(chēng) TableN,以表示 Table0 的“Table”為第一個(gè)表名。
    2009-04-04
  • ASP.NET中使用IFRAME建立類(lèi)Modal窗口

    ASP.NET中使用IFRAME建立類(lèi)Modal窗口

    ASP.NET中使用IFRAME建立類(lèi)Modal窗口...
    2006-09-09
  • asp.net中的窗體身份驗(yàn)證(最簡(jiǎn)單篇)

    asp.net中的窗體身份驗(yàn)證(最簡(jiǎn)單篇)

    這篇文章主要介紹了最簡(jiǎn)單的asp.net中的窗體身份驗(yàn)證,詳細(xì)敘述了asp.net的窗體身份驗(yàn)證步驟,感興趣的小伙伴們可以參考一下
    2015-09-09
  • Asp.net Mvc表單驗(yàn)證氣泡提示效果

    Asp.net Mvc表單驗(yàn)證氣泡提示效果

    這篇文章主要為大家詳細(xì)介紹了Asp.net Mvc表單驗(yàn)證氣泡提示效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • C# 可空類(lèi)型分析

    C# 可空類(lèi)型分析

    可空類(lèi)型是 System.Nullable 結(jié)構(gòu)的實(shí)例??煽疹?lèi)型可以表示其基礎(chǔ)值類(lèi)型正常范圍內(nèi)的值,再加上一個(gè) null 值。
    2008-12-12
  • .Net彈性和瞬態(tài)故障處理庫(kù)Polly實(shí)現(xiàn)彈性策略

    .Net彈性和瞬態(tài)故障處理庫(kù)Polly實(shí)現(xiàn)彈性策略

    這篇文章介紹了.Net彈性和瞬態(tài)故障處理庫(kù)Polly實(shí)現(xiàn)彈性策略的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • .NET?HttpClient簡(jiǎn)單使用教程

    .NET?HttpClient簡(jiǎn)單使用教程

    SpringCloud中服務(wù)和服務(wù)之間的調(diào)用全部是使用HttpClient,還有前面使用SolrJ中就封裝了HttpClient,在調(diào)用SolrTemplate的saveBean方法時(shí)就調(diào)用HttpClient技術(shù)。接下來(lái)通過(guò)本文給大家介紹.net?HttpClient簡(jiǎn)單使用教程,需要的朋友可以參考下
    2021-11-11
  • .net后臺(tái)代碼調(diào)用前臺(tái)JS的兩種方式

    .net后臺(tái)代碼調(diào)用前臺(tái)JS的兩種方式

    這篇文章主要介紹了.net后臺(tái)代碼調(diào)用前臺(tái)JS的兩種方式,需要的朋友可以參考下
    2014-03-03
  • Asp.net 網(wǎng)站性能優(yōu)化二則分享

    Asp.net 網(wǎng)站性能優(yōu)化二則分享

    Web服務(wù)器的性能優(yōu)化有很多資料介紹了,多臺(tái)主機(jī)負(fù)載均衡,查詢(xún)結(jié)果的多級(jí)緩存,數(shù)據(jù)庫(kù)索引優(yōu)化等都是常見(jiàn)的優(yōu)化手段。
    2011-08-08
  • Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序

    Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序

    這篇文章主要介紹了Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評(píng)論

介休市| 鲜城| 唐海县| 密山市| 天全县| 广州市| 洛隆县| 杨浦区| 万年县| 黄平县| 芦山县| 宾阳县| 犍为县| 东台市| 北宁市| 清水河县| 琼中| 沛县| 泊头市| 容城县| 伊吾县| 毕节市| 博爱县| 无锡市| 会理县| 光泽县| 洱源县| 阿坝县| 洞口县| 育儿| 宜宾市| 磐安县| 博白县| 陵川县| 洛阳市| 秀山| 彰武县| 广水市| 理塘县| 略阳县| 井陉县|