我正在学习来自 C++ 的 C# 并且遇到了障碍。
我有一个抽象类 AbstractWidget、一个接口 IDoesCoolThings 和一个派生自 AbstractWidget 的类,称为 RealWidget:
public interface IDoesCoolThings
{
void DoCool();
}
public abstract class AbstractWidget : IDoesCoolThings
{
void IDoesCoolThings.DoCool()
{
Console.Write("I did something cool.");
}
}
public class RealWidget : AbstractWidget
{
}
当我实例化一个 RealWidget 对象并在其上调用 DoCool() 时,编译器给我一个错误说
“RealWidget”不包含“DoCool”的定义
我可以将 RealWidget 对象转换为 IDoesCoolThings,然后调用将起作用,但这似乎没有必要,而且我也失去了多态性(即使我定义了 RealWidget.DoCool(),AbstractWidget.DoCool() 也将始终被调用)。
我想解决方案很简单,但是我尝试了很多方法,但我一生都无法弄清楚这一点。