讓您知道您的方法是被何「人」呼叫

2022-07-29 13:09:17 字數 1544 閱讀 2998

也許在某些場合下我們想知道自己的某個方法是被誰(哪個方法)呼叫的?比如下面的例子:

////// 正常方法///staticvoidmethod1()

////// 過期方法///[obsolete]staticvoidmethod2()

////// 禁止過期方法呼叫此方法///staticvoiddisabledobsoletemethod()

在上面**中,我們要在disabledobsoletemethod函式裡限制具有「obsolete」屬性的方法

呼叫,我們如何去做呢?

在.net中提供了乙個"stackframe"類用於表示當前執行緒上的函式呼叫堆疊中的某個具體函式,所以我們通過它就可繼續編寫我們的disabledobsoletemethod函式,**如下:

////// 禁止過期方法呼叫此方法///staticvoiddisabledobsoletemethod()

包括有obsolete屬性已被禁止呼叫", method.name));

}//繼續做其它操作}

到此,當執行method1時我們的disabledobsoletemethod函式就可以正常運作,而method2就會被丟擲異常警告了

因為stackframe的建構函式可以指定偏移量,所以我們可以使用它獲取呼叫我們的函式時函式呼叫堆疊裡都有些什麼函式,也即是可以了解到當前程式的乙個流程是如何的,示例**如下:

classtest

while(true);

console.read();

}}

其實.net已經為我們提供了乙個stacktrace類,其可以獲取函式呼叫堆疊裡的所有函式的有序集合,通過它我們就能將上面的**簡化為下面的**了,如下:

classtest

console.read();

}}

兩者輸出的結果還是一樣的,如下:

main

_nexecuteassembly

executeassembly

runusersassembly

threadstart_context

run

threadstart

您的雲提供商不想讓您知道什麼

雲架構的實踐方式有所不同,具體取決於您與誰一起工作或與誰一起工作。鑑於雲架構師的工作範圍涵蓋計畫,設計,技術選擇,技術整合和部署計畫,因此通常會以某種方式忽略整個雲架構本身。缺乏雲體系結構規範會導致效率低下的體系結構,這會花費您的錢,但卻會為公共雲提供商賺錢。這裡要牢記一些秘密。他們是如此之多,以至...

您的雲提供商不想讓您知道的更多秘密

在上一篇文章中,我談到了降低成本的方法,可以降低您的雲計算費用,並更好地利用現有的資料庫許可證。每個技巧都會為您省錢,並減少您的雲提供商的負擔。這裡是接下來要考慮的兩個 秘密 我假設您已經閱讀了前兩個。在infoworld中了解有關雲的所有資訊。從基礎開始 什麼是雲計算?您現在需要知道的一切 然後學...

您必須知道的檔案救援方法

有時,我們不得不面對不小心誤刪重要檔案,受到電腦病毒感染無法開啟資料 格式化後沒有備份檔案 檔案毀損 無法開啟等問題。當出現這些問題時,您是如何做檔案修復呢?檔案是存在在硬碟等儲存裝置中的,當這些儲存裝置發生故障時,可能會遺失部分資料,甚至可能它上邊的全部資料都會丟失。資料無法檢視大部分是因為 硬碟...