簡體   English   中英

C#從基類內部獲取派生類型的名稱

[英]C# Get Name of Derived Type from Inside base Class

在調試會話期間,在特定實例的調試信息中識別實際派生類的名稱對我來說很重要。

我嘗試使用this.GetType().Name但這只是返回base類的類型。

有沒有一種簡單的方法可以從基類中獲取派生類的類型?

this.GetType().Name應該可以工作。 我認為,就您而言,您可能沒有派生類。 如果它返回基類名稱,它不應該有派生類。

使用這個:

  1. 基類 - 輸出基類名稱
  2. 派生類 - 輸出派生類名稱
  3. 派生類轉換為基類 - 輸出派生類名稱
  4. 派生類傳遞給接受基類作為參數的函數 - 輸出派生類名稱

this.GetType().Name總是返回當前執行類型的名稱,而不是編寫它的代碼的類型。不過,您可以模擬斷點,以有條件的方式使用Debugger.Break()

if (this.GetType().Name == "Problematic type")
    System.Diagnostics.Debugger.Break();

在調試會話期間...

請記住,與其暫停會話以添加一些丟棄的代碼然后重新編譯並重新啟動,不如使用調試器來預測斷點被擊中后......

通過利用調試器的Immediate Window並鍵入相關實例的this.GetType().Name ,然后按Enter ,它將顯示出來。

請參閱 VS Docs: 立即窗口

有沒有一種簡單的方法可以從基類中獲取派生類的類型?

是的,例如,我可以通過使用GetTypeName屬性實時確定異常是什么:

在此處輸入圖像描述

引發事件時,請務必將真實的發送者傳遞給發送者屬性。 監聽類中的發送者對象應正確指向引發事件的子類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM