Есть вот такой вот метод:

Код AS3:
public function getByType(childType:IObj):IObj
{
for each(var tmpEl:IObj in _objList)
{
if(typeof(tmpEl) == typeof(childType))
{
return tmpEl;
}
}
return null;
}
Это метод класса, который является обёрткой вокруг вектора абстрактных интерфейсов типа IObj. Нужен, чтобы можно было делать вот так:

Код AS3:
var objNeed:ObjImp1;
objNeed = abstructList(objNeed) as ObjImp1;
Таким образом пользователь сможет пихать любого наследника в список, после чего получать его по типу без необходимости знать точный индекс нужного наследника.
Простой проверкой вышло, что через
typeOf() работать нельзя - он возвращает тип самой ссылки, а не конкретного объекта, на который ссылается и, понятное дело, цикл метода вылетал на первой итерации.
Вопрос, собственно... Как вы предложите решить эту проблему?
Пока идея такая:
Ввести в интерфейс
IObj метод
getType(), реализация которого обязана будет вернуть тип - можно в строковом виде, но я думаю взять константу, которая будет храниться в статическом классе. В результате вместо
typeOf() будем вызывать этот метод и сравнивать элементы через него.
Идея достаточно громоздкая и мне кажется, что можно найти более изящное решение. Если будет возможность - предложите свои соображения по этому поводу.