Мои классы не все будут расширять один и тот же класс в библиотеке, но у них будет общий класс-предок в этой библиотеке.
Я хочу написать несколько служебных методов, которые принимают некоторые из моих классов и вызывают методы в общем базовом классе.
Добавить интерфейс для общих методов в моих классах достаточно легко, но тогда я не могу также «требовать», чтобы тип имел общего предка.
Например, у меня может быть следующая иерархия:
Код: Выделить всё
Node (API class)
|
+-Node2D (API class)
|
+-RigidBody2D (API class)
| |
| +-MyClassA : ICommon (My custom class and interface)
|
+-Area2D (API class)
|
+-MyClassB : ICommon (My custom class and interface)
В настоящее время это единственный способ, которым я могу можно подумать, что можно сделать это, используя дженерики, например:
Код: Выделить всё
void T MyMethod(T arg) where T : Node2D, ICommon
Это также не работает, если я хочу использовать смешанный массив классов, например:
Код: Выделить всё
void T[] OtherMethod(T[] arg) where T : Node2D, ICommon
Подробнее здесь: https://stackoverflow.com/questions/788 ... estriction