如何将另一个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);
}
答案 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());
}