Получение статической константы из класса с использованием зеркал в дротике

Я пытаюсь получить константу BYTES_PER_ELEMENT в Float32List (и других массивах типизированных данных) с помощью зеркал, но все, что я получаю, это исключение No static getter 'BYTES_PER_ELEMENT' declared in class 'Float32List'. Итак, в более общем плане, как я могу получить доступ к статическим константам класса?

import 'dart:typed_data';
import 'dart:mirrors';

main() {
  var array = new Float32List(10);

  var bytesPerElement = reflect(array).type.getField(#BYTES_PER_ELEMENT).reflectee;

  print(bytesPerElement);
}

person Brage    schedule 22.04.2015    source источник


Ответы (1)


new Float32List() — это фабричный конструктор, который возвращает _Float32Array, у которого нет BYTES_PER_ELEMENT.

print(reflect(array).type);

отпечатки

ClassMirror on '_Float32Array'
var bytesPerElement = 
    reflectClass(Float32List)
    .getField(#BYTES_PER_ELEMENT)
    .reflectee;

отпечатки

4

Я почти уверен, что невозможно найти обратный путь из _Float32Array в Float32List с помощью зеркал.

person Günter Zöchbauer    schedule 23.04.2015