【发布时间】:2011-07-26 14:12:57
【问题描述】:
在查看this question 时,评论者@Jon Egerton 提到MyClass 是VB.Net 中的一个关键字。没用过,我去找了documentation:
MyClass 关键字的行为类似于一个对象变量,它引用最初实现的类的当前实例。 MyClass 与 Me 类似,但对它的所有方法调用都被视为该方法是 NotOverridable。
我可以看到在某些特定情况下这会很有用。我想不到的是,您将如何在 C# 中获得相同的行为 - 也就是说,确保在当前类中实际上针对 myMethod 调用了对虚拟方法 myMethod 的调用,而不是派生的myMethod(在 IL 中也称为 call 而不是 callvirt)?
不过,我可能只是有一个完全的精神空白时刻。
【问题讨论】:
-
当然,您可以使用反射和
DynamicMethod和自定义IL 生成(使用call而不是您建议的callvirt)来做到这一点,但您最终会得到很多首先可能是一个坏主意的丑陋代码。如果您出于某种原因确实需要这种行为,那么 Heinzi 的解决方法就是您要走的路。