Карта по классам в Dart

Я переношу некоторый код Java -в Dart, и он активно использует такие карты :

Map, SomeOtherClass> map = new HashMap<>();

. На данный момент это кажется невозможным в дартс. Я знаю, что есть предложение ввести типы первого уровня:http://news.dartlang.org/2012/06/proposal-for-first-class-types-in-dart.htmlкоторый вводил бы

class Type {
    @native String toString();
    String descriptor(){...} // return the simple name of the type
}

Итак, пока это предложение не будет реализовано, я создал следующий класс:

class Type {
    final String classname;
    const Type(this.classname);
    String descriptor() => classname;
}

и классы, где мне это нужно, имеют простой метод get -

abstract Type get type();

Таким образом, я могу использовать свой Typeтак же, как настоящий Type, а для переключения позже мне просто нужно удалить обходной путь.

Мой вопрос :Есть ли какой-то дротик -способ сделать такое отображение (, которого я не вижу ), или способ, которым я это делаю, является разумным обходным путем, пока не будет введен настоящий Typeкласс?

Обновление для Dart 1.0

Это можно сделать так:

var map = new Map();
// either
map[SomeOtherClass] = new SomeOtherClass();
// or
var instance = new SomeOtherClass();
map[instance.runtimeType] = instance;

6
задан Dennis Kaselow 7 December 2013 в 08:57
поделиться