这是我的情况.在Java中,我可以在base/super类中将方法标记为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
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:不重复.
所有答案似乎都暗示,不可能阻止方法在派生类中隐藏/隐藏.在将一些旧的Java代码迁移到C#时,这一点变得很明显.Java中的最终方法不允许任何人在任何派生类中使用相同的方法签名.虽然在大多数场景中C#允许在派生类中使用相同签名的方法,但如果有必要,可以防止这种行为.