Я хотел бы хранить экземпляры моделей в общем поставщике, используя их классы или интерфейсы в качестве ключей, а затем отображать их по ссылкам на классы.Я написал некоторый код:
class Provider {
public function new() { }
public function set<T:Any>(instance:T, ?type:Class<T>) {
if (type == null)
type = Type.getClass(instance);
if (type != null && instance != null)
map.set(type, instance);
}
public function get<T:Any>(type:Class<T>):Null<T> {
return cast map.get(type);
}
var map = new Map<Class<Any>, Any>();
}
... увы, он даже не компилируется.Возможно, я должен использовать квалифицированное имя класса в качестве ключа, а не ссылку на класс / интерфейс?Но я хотел бы сохранить аккуратный дизайн функции get, который принимает тип в качестве аргумента и возвращает объект только взятого типа, без дополнительного приведения типов.
Возможно ли это или я должен изменить свой подход к этой проблеме?