class NameClass<T> : ParentClass, INameClass<T> where T : List<A>, List<B>, new() {}
Создаю класс, где <T> булет принимать значения List<A> или List<B>.
У меня ругается на List<B>.
Говорит:
Ошибка CS0406 Все другие ограничения должны следовать после ограничения типа класса "List<B>"
Если меняю местами регается на List<A>.
EDIT:
class NameClass<T> : ParentClass, INameClass<T> where T : List<T>, new() {}
Если написать так, то ошибки нет. Но я не уверен будет ли это правильно работать, не будет ли закольцованности?
Ошибка CS0406 возникает, потому что ты пытаешься определить параметр Т как наследник от двух классов, что невозможно в C#.
В целом, как уже было отмечено в комментариях, по вопросу очень сложно судить о желаемом результате определения класса. Но, попытавшись догадаться, предлагаю такой вариант:
class NameClass<T> : ParentClass, INameClass<T> where T : List<ICommonAB>, new() {}
где ParentClass, INameClass<T>, ICommonAB - уже определённые ранее классы, а также ICommonAB является общим предком (или интерфейсом) классов A и B.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости