Приведенный выше класс не является транзитивно незаменимым, и поэтому преобразование должно завершиться ошибкой.
Проблема, которую намеревается избежать правило незаменимости, - это набор моделей, например: 1005 * Проблема с этими классами заключается в том, что SignalType в MyPort кажется двумя вещами одновременно, и неясно, где возникла проблема, поскольку повторное объявление кажется совместимым с ограничивающим классом, и исходный класс выглядел нормально.
(Транзитивно просто означает, что у вас могут быть промежуточные незаменяемые классы, чтобы запутать вещи.)
И обходной путь Адриана Попа - хорошее решение.