我有一個日誌庫,它提供了一個GUI,允許最終用戶在每個類的基礎上啓用/禁用日誌記錄。這允許支持人員讓最終用戶在解決問題時啓用對感興趣的類的日誌記錄,而不會將日誌與我們不關心的垃圾混淆在一起(這裏有更多內容,但它應該足以解決此問題) 。 GUI必須列出所有使用日誌記錄庫的類。.NET庫能在運行時識別調用類嗎?
我已經在過去使用的方法(在Win32的應用程序)是提供一個寄存器功能該庫的用戶會打電話要列出使用該庫中的類。這有效,但是很痛苦且容易出錯。鑑於我現在在使用.NET,我希望能夠在運行時自己獲得這些類的列表,所以我可以在不需要註冊的情況下填充GUI。
有沒有辦法做到這一點?
你可以使用'Assembly.GetTypes'方法? http://msdn.microsoft.com/en-us/library/system.reflection.assembly.gettypes.aspx也許用戶可以用屬性指示它應該被記錄的類來裝飾類?我不確定你的設計是如何區分類的。 –
檢查日誌並提取已發出日誌消息的類的不同列表不是更好嗎?日誌框架本身是否真的需要識別和停止通過特定類的日誌消息,還是前端只需要應用過濾器? – MattDavey
我同意@MattDavey關於什麼是我的首選aproach,除了它更簡單之外,至少在沒有問題的時候,日誌會在那裏,而且你不需要等待它再次發生。但是,如果我必須像Chris Sinclair那樣做,我會使用一個屬性來創建可記錄日誌,然後使用配置文件來確定要記錄哪些可記錄事件。 –