Возможна ли проблема алмазов с интерфейсами в C #? - PullRequest
0 голосов
/ 08 октября 2018

Есть ли проблемы с архитектурой в приведенном ниже коде?Возможна ли так называемая проблема diamond с интерфейсами или схожими проблемами?

interface IComponent
{
    void DoStuff();
}

interface ITitledComponent : IComponent
{
    string Title { get; }
}

abstract class ComponentBase : IComponent
{
    public void DoStuff()
    {
        throw new NotImplementedException();
    }
}

class MyComponent : ComponentBase, ITitledComponent
{
    public string Title => throw new NotImplementedException();
}

Конечно, наследование алмазов с классами является плохим решением, и это невозможно в C #.Но про интерфейсы я не нашел информации.

1 Ответ

0 голосов
/ 08 октября 2018

Нет, невозможно создать проблему с алмазом в C #, потому что вы можете наследовать только один класс.Интерфейсы не наследуются, а реализуются.Таким образом, настоящая проблема для компилятора и кодера, имея две реализации метода и не зная, что выбрать для определенного класса, никогда не может произойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...