Dart从另一个文件动态获取类的实例

时间:2013-08-09 07:09:39

标签: dart

我正试图(通过我的意思是创建一个新的)一个类的实例。这就是我所做的:

file_one.dart

import 'dart:isolate';

void main() {
  SendPort sendPort = spawnUri('file_two.dart');
  sendPort.call('get new instance')
    .then(print);
}

file_two.dart

import 'dart:isolate';
import 'dart:mirrors';

class TestClass {}

void main() {
  port.receive((message, SendPort replyTo) {
    MirrorSystem current = currentMirrorSystem();
    LibraryMirror isolate = current.isolate.rootLibrary;
    Map classes = isolate.classes;
    ClassMirror test = classes[const Symbol('TestClass')];
    TestClass testClass = test.newInstance(const Symbol(''), []).reflectee;
    replyTo.send(testClass);
  });
}

它什么都不打印,但如果我发送一个字符串,例如'SomeString',它会打印'SomeString'。任何解决方法?

1 个答案:

答案 0 :(得分:4)

您无法通过端口发送testClass,因为根据dart:isolate - Concurrency with Isolates

  

消息的内容可以是以下任何内容:

     
      
  • 原始值(null,num,bool,double,String)
  •   
  • SendPort的一个实例
  •   
  • 其元素为上述任何一个的列表或地图,包括其他列表和地图
  •   
  • special circumstances中,任何类型的对象
  •   

还有an issue to allow Transferable Objects for Dart's Isolates可能会在将来改变这种行为。