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