如何将对象强制转换为内部类

本文关键字:转换 内部类 对象 | 更新日期: 2023-09-27 18:30:31

我正在查看内部 .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实例。但是在这样的代码中,它并不是真正必要的。