Задать вопрос
@ndbn

Как сделать наследование от нескольких классов в C#?

Здравствуйте.
Все классы должны иметь базовый класс MyBaseClass, чтобы они имели поле BaseObject типа Т и хранили там значения своих полей.
Но при наследовании, как в случае с FakeClass2, он наследуется от FakeClass1, а BaseObject у него должен быть типа RealClassForFakeClass2.
Возможно ли такое реализовать?
На сколько я понимаю, возможно унаследоваться от FakeClass1, а BaseObject перекрыть в самом классе, но хотелось бы, чтобы можно было как-то без перекрытия в самом классе реализовать такой подход или через MyBaseClass или ещё как-то.
public class MyBaseClass<T>
    where T : class, new()
{
    protected T BaseObject = default(T);
    public T getBaseObject()
    {
        return this.BaseObject;
    }
}

public class FakeClass1 : MyBaseClass<RealClassForFakeClass1>
{
    public string Field1
    {
        set
        {
            this.BaseObject.Field1 = value;
        }
    }

    public string Field2
    {
        set
        {
            this.BaseObject.Field2 = value;
        }
    }
}
    
public class FakeClass2 : FakeClass1, MyBaseClass<RealClassForFakeClass2> ////error
{
    public FakeClassN Field1
    {
        set
        {
           this.BaseObject.Field1 = value.getBaseObject(); 
        }
    }
}
  • Вопрос задан
  • 2231 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Neonoviiwolf
Flutter developer
Невозможно, используйте интерфейсы и композицию
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
В любом учебнике по C# в главе про наследование первым делом вам бы сказали что такое невозможно. Для сферической задачи в вакууме решения нету. Для более конкретных - можно найти какие-либо архитектурные решения. Если вы не хотите наследовать реализацию этих классов - делайте через интерфейсы.
Ответ написан
Комментировать
Никак, только прокси использовать, сгенерировать можно на т4 , если много писать и не один раз.

Код с мобилы не изучал, ответ по теории. По факту возможно есть проблема с логикой, если требуется наследование от нескольких классов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы