簡體   English   中英

埃菲爾鐵塔:內省的文檔和呼叫者類

[英]Eiffel: introspection's documentation and caller class

在哪里可以找到有關埃菲爾內省的文檔?

某些函數可以在GENERAL類中調用

我正在尋找調用者的類名來修改記錄器的格式化程序

就像是:

Current.generator_client_object.class_name

可以使用generator查找對象的類名。 可以通過其他方式獲得更詳細的信息,從較高級別到較低級別:

  • 調用返回一個類型為TYPE的對象的特征generating_type
  • 使用REFLECTED_OBJECT類的后代(有參考對象和擴展對象的版本)來挖掘對象結構
  • 使用REFLECTORINTERNAL類進行較少抽象的低級操作

沒有標准機制來獲取當前正在執行的功能或其調用方的詳細信息。 仍然有可能從異常堆棧跟蹤中獲取此信息。 這個想法如下:

  1. 添加將實際執行日志記錄的功能。
  2. 向此功能添加一些代碼,這將引發異常。
  3. 在功能的救援子句中捕獲異常。
  4. 解析使用{EXCEPTION}.trace檢索到的堆棧跟蹤。跟蹤一級或二級(需要一些實驗才能獲得正確的結果)。
  5. 記錄有關呼叫者的信息(類+功能+停止點號碼)。

盡管這是可行的,但是性能將成為問題,因為異常處理和解析是緩慢的操作。

暫無
暫無

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

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