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

标签 c# reflection

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

关于c# - 如何将对象强制转换为内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34785319/

相关文章:

java - 我可以使用反射发现 Java 类的声明内部类吗?

ios - 实例化存储在元类型字典中的类

c# - 允许按位运算的通用约束?

C# : dynamic polymorphism with non polymorphic classes

c# - WPF:将列表绑定(bind)到列表框

java 字段变化监听器

java - LambdaMetaFactory 和私有(private)方法

c# - Directory.CreateDirectory 因无效字符而失败

c# - C#SQLite事务-此用法有效吗?

用于创建新对象的 Java 反射