Я изучаю С#, исходящий из С++, и столкнулся с стеной.
У меня есть абстрактный класс 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, а затем вызов будет работать, но это кажется ненужным, и я также теряю полиморфизм (AbstractWidget.DoCool() всегда будет вызываться, даже если я определяю RealWidget.DoCool()).
Я предполагаю, что решение прост, но я пробовал разные вещи, и для меня жизнь не может понять этого.