Class参数中的其他类

时间:2012-07-29 23:55:58

标签: dart

如何将另一个Class设置为Class构造函数参数?

class MyClass {
     String message = 'myClass';

     void print() {
         print(this.message);
     }
}

class TestClass {
    var myClass;

    TestClass(???) {
        this.myClass = ???(); // ???
    }

    void debug() {
        print('DEBUG: ');
        this.myClass.print();
    }
}

main() {
 MyClass myClass;
 testClass(myClass);
}

3 个答案:

答案 0 :(得分:2)

你不能(至少现在不行)。您最好的选择是将构建器函数传递给构造函数。

class MyClass {
   var clazzBuilder;

   MyClass(this.clazzBuilder);

   doStuff() {
      var instance = clazzBuilder();
      :
   }
}

然后像这样使用它

var myTest = new MyClass(() => new Test());
var myProd = new MyClass(() => new Prod());

请注意,Dart团队计划将语言概念( .type )和反射添加到语言中。

答案 1 :(得分:1)

你想要做什么?通常人们试图在某些其他语言中使用某些语言来应用范式,这不是做某些事情的最佳方式

答案 2 :(得分:0)

由于print实例方法而不是静态方法,因此您无需传递本身到TestClass,只是它的一个实例。你的程序可以修改如下:

class MyClass {
     String message = 'myClass';

     void print() {
         print(this.message);
     }
}

class TestClass {
    var myClass;

    TestClass(MyClass myClass) {
        this.myClass = myClass;
    }

    void debug() {
        print('DEBUG: ');
        this.myClass.print();
    }
}

main() {
 MyClass myClass = new MyClass();
 testClass(myClass);
}

或者,更具惯用性:

class MyClass {
   String message = 'myClass';

   void print() => print(message);
}

class TestClass {
  var myClass;

  TestClass(this.myClass);

  void debug() {
    print('DEBUG: ');
    myClass.print();
  }
}

main() {
  testClass(new MyClass());
}