理解C#中的方法隐藏与重写:解决实际问题

理解C#中的方法隐藏与重写:解决实际问题

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

在工作中,我遇到派生类未正确实现接口的问题,导致字典未填充。经过调查,发现是方法隐藏造成的。将派生类中的方法从“new”改为“override”后,问题得到解决。这让我理解了方法隐藏与重写的区别。

🎯

关键要点

  • 在工作中遇到派生类未正确实现接口的问题,导致字典未填充。

  • 调查发现是方法隐藏造成的,派生类未完全实现接口。

  • 使用反射动态加载所有实现ICard接口的类。

  • Arcanologist类和ArcanologistCore类分别实现GetCardId()方法。

  • ArcanologistCore未出现在HighlightCards字典中,尽管它实现了ICardWithHighlight接口。

  • 最初的解决方案是手动添加ICardWithHighlight接口,但不满意。

  • 方法隐藏是指派生类定义与基类同名的方法而不使用override关键字。

  • 方法重写使用override关键字,确保派生类的方法被调用。

  • 解决方案是将ArcanologistCore中的GetCardId()方法改为override,确保正确实现接口。

  • 修改后,问题得到解决,理解了方法隐藏与重写的区别。

➡️

继续阅读