[英]How to cast an object to internal class
我正在查看內部.Net類的源代碼,並希望使用反射修改函數。 (通過使用反射將原始函數的每一行重寫為新函數並將其修改添加到其中)
object responseObject = request.ConnectionAsyncResult.InternalWaitForCompletion();
ConnectStream writeStream = responseObject as ConnectStream;
if (writeStream == null) ...
我該如何編寫代碼的第二行?
代碼檢查對象是否是特定類,但如果類是內部類,我不知道如何執行此操作。 如何將對象轉換為內部類?
ConnectStream是一個內部類
好吧,你沒有。 你只需要為每一步使用反射 - 編譯器肯定不會幫助你:)
“重寫每一行”無論如何都是一個壞主意 - 獲取實際工作的代碼有點棘手。 相反,你可能只想讓你的輔助方法調用原始方法,以及做你需要做的任何事情。
使用反射時,您不需要在編譯時知道類型,也不需要遵守所有C#的規則。 與原始代碼大致相同的代碼可能如下所示:
if (responseObject != null && responseObject.GetType().Name == "ConnectStream")
根據您的實際需要,還有更好的方法來進行檢查 - 例如,您可以使用System.Net
程序集並找到具有正確名稱空間和所有內容的ConnectStream
類型,並直接比較兩個Type
實例。 但在像這樣的代碼中,它並不是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.