Как вызывать строку или файл библиотеки форматов формы формы

113
15

кто должен вызывать строку или файл библиотеки dart класса формы?


например


файл for-load.dart


class TestLoad {
void requestHandler(){
}
}

затем файл main.dart


main(){
//this get load lib
var lib = currentMirrorSystem().libraries[Uri.parse('dart:core')];
//who to invoke class form TestLoad or for-load.dart?
//like java Class.forName('TestLoad') , nodejs require('for-load')
}

спасибо!

спросил(а) 2021-01-20T00:16:23+03:00 9 месяцев, 1 неделя назад
1
Решение
92

Эти символы являются именами Библиотеки, класса и конструктора для класса, который вы хотите динамически вызывать


foo.dart


library foo_library;

class Foo {
String bar;
}

invoke_class.dart


library new_instance_test;

import "dart:mirrors";
import "foo.dart";

int main() {
// These symbols are the names of the Library, the Class and the constructor for the Class that you want to dynamically load
final Symbol librarySymbol = const Symbol("foo_library");
final Symbol classSymbol = const Symbol("Foo");
final Symbol constructorSymbol = const Symbol("");

MirrorSystem mirrorSystem = currentMirrorSystem();

// Get LibraryMirror for Library foo_library.
// It returns an iterator, get the first LibraryMirror
LibraryMirror libraryMirror = mirrorSystem.findLibrary(librarySymbol).first;

// Get ClassMirror for Class Foo
ClassMirror classMirror = libraryMirror.declarations[classSymbol];

// Get the InstanceMirror using the default constructor
InstanceMirror testClassInstanceMirror = classMirror.newInstance(constructorSymbol, []);

//Get the reflectee object from the InstanceMirror
Foo foo = testClassInstanceMirror.reflectee;

//Set bar and print it
foo.bar = "foobar";
print(foo.bar);
}

ответил(а) 2021-01-20T00:16:23+03:00 9 месяцев, 1 неделя назад
47

Что-то, что может быть очень полезно для вас, как упоминалось в комментариях, является изолятом. Если вы хотите взглянуть на них, вы должны посмотреть на это blogpost Сета Лэдда.
Я также буду разбираться в этой теме и посмотреть, смогу ли я что-то сделать.

ответил(а) 2021-01-20T00:16:23+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема