“Множественное наследование” c#

216
23 марта 2017, 18:15

Есть иерархия классов, появилась ситуация в которой не могу придумать нормального решения. (стрелками показано наследование, красным цветом - желаемое, но невозможное )

Классы U, S, A, W используют одну и ту же реализацию функции F

А классы SAI, AAI, WAI другую, но общую между собой. Именно это и не получается реализовать так как нет возможности создать дополнительный класс AI реализовать в нем F и тогда наследоваться от него. Получается что придется просто копировать реализацию F для SAI, AAI, WAI, что есть плохо.

Какой есть способ красиво решить эту проблему??

Спасибо!

Answer 1

Множественное наследование от нескольких классов невозможно. Используйте интерфейс IFunctionF и два вспомогательных класса F1 и F2, каждый из которых имеет свою реализацию IFunctionF. И далее от F1 и F2 наследуйте ваши семейства U,A,S,W от F1 и SAI, AAI, WAI от F2.

 public interface F
    {
       int F();
    }
    class F1:F
    {
        public virtual int F()
        {
            return 2;
        }
    }
    class F2 : F
    {
        public virtual int F()
        {
            return 3;
        }
    }
    class S : F1
    {
        void a()
        {
            F();
        }
    }
    class AAI : F2
    {
        void a()
        {
            F();
        }
    }
READ ALSO
Логика взаимодействия окон и контекста MVVM

Логика взаимодействия окон и контекста MVVM

Допустим у меня есть унифицированное окошкоBasicDialogUI

236
Почему MemberInfo.GetCustomAttributes игнорирует наследование

Почему MemberInfo.GetCustomAttributes игнорирует наследование

Метод MemberInfoGetCustomAttributes получает список атрибутов члена типа

217
System.Data.SqlClient.SqlException не обработано

System.Data.SqlClient.SqlException не обработано

Есть программкаПри выполнении записи в базу данных вылетает ошибка:

531
Отследить какая кнопка была нажата, если кнопки создаются программно

Отследить какая кнопка была нажата, если кнопки создаются программно

Здравствуйте, программно создаю на форме кнопки в зависимости от того, сколько записей существует в базе данных по заданному запросуПодскажите,...

293