Универсальное классовое ограничение многоуровневое наследование - PullRequest
0 голосов
/ 14 января 2020

Нужна помощь в соединении такой структуры.

Имеет базовый обобщенный класс c:

public class A<T>
    where T: class
{
    public T info { get; set; }    
}

Работает хорошо для одного шага наследования, например:

class B : A<BInfoClass>{}

Но нужно то же самое для элементов более высокой иерархии, например, но без создания универсальных классов:

class C : B<CInfoClass>{}

Требуется возможность иметь конкретный c тип "info" для каждого B, C, D et c. (классы "информация" происходят из одной базы):

1 Ответ

0 голосов
/ 14 января 2020

Я хотел бы предложить добавить еще один уровень иерархии, просто чтобы обобщенный класс c стал pure generi c.

Вы также можете поместить весь общий код в AContainer. .

public class AContainer<T> where T : class, InfoA {
  public T info { get; set; } 
} 
public class A : AContainer<InfoA> {}
public class BContainer<T>: AContainer<T> {}
public class B : BContainer<InfoB> {} 
public class CContainer<T>: BContainer<T> {}
public class C : CContainer<InfoC> {}

Классы A, B и C являются пустыми классами для условия without making all classes generics (для использования в Unity). Добавлены AContainer BContainer и CContainer, чтобы можно было использовать generi c здесь.

Однако это не похоже на место для использования дженериков

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