2016-02-12 2 views
0

У меня есть карта строк для типов в Дарте, например. animals = <String, Type>{'cat':CatType, 'dog':DogType}, который я изменяю во время выполнения. Есть ли способ гарантировать, что типы, добавленные в эту карту, реализуют определенный интерфейс либо во время компиляции, либо во время выполнения? Что-то вродеОбеспечение того, что тип Dart реализует интерфейс

animals = <String, Type<? implements AnimalType>>{...} 

или во время выполнения,

void register(name, type): 
    if type implements AnimalType: 
    animals[name] = type 

ответ

1

Нет, не совсем.

Класс Type не является общим, поэтому вы не можете иметь ограничение на это.

Вы можете использовать библиотеку dart:mirrors, чтобы проверить, является ли объект Type классом, который реализует другой тип, но это, скорее всего, не стоит усилий.

Смежные вопросы