这是我的情况。在 Java 中,我可以在基类/超类中将方法标记为 final,派生类无法屏蔽具有相同签名的方法。然而,在 C# 中,new 关键字允许继承我的类的人创建具有相同签名的方法。
请参阅下面的示例。我需要保持 orignal.MyClass 公开,所以请不要建议作为答案。这似乎是从 Java 迁移到 C# 时丢失的功能
public class orignal.MyClass{
public void MyMethod()
{
// Do something
}
}
class fake.MyClass: orignal.MyClass {
// How to prevent the following
public new void MyMethod()
{
// Do something different
}
}
编辑:不是重复的。
所有答案似乎都表明,不可能防止方法在派生类中被隐藏/隐藏。在将一些旧的 Java 代码迁移到 C# 时,这一点变得很明显。Java 中的 final 方法不允许任何人在任何派生类中使用相同的方法签名。虽然在大多数情况下 C# 允许派生类中具有相同签名的方法很好,但如果有必要,防止这种行为会很好。