2015-11-02 110 views
1

我想知道是否有可能动态扩展一个类,我是Dart的新手,我正在寻找类似的东西(请注意$ {whatever}只是为了说明目的) :动态扩展一个类

class MyClass extends ${otherClass} 

,让我们说我想从另一个函数初始化它:

var myDinamic = new myClass<otherClass> 

希望这是有道理的,并在此先感谢!

回答

0

一个类扩展另一个类只能静态定义,而不能在运行时定义。最接近的可能是使用泛型类型参数来配置类型。 https://www.dartlang.org/docs/dart-up-and-running/ch02.html#generics
- -


http://blog.sethladd.com/2012/01/generics-in-dart-or-why-javascript.html

abstract class SomeInterface {} 
class A implements SomeInterface {} 
class B implements SomeInterface {} 
class C<T extends SomeInterface> { 
    T doSomething(T arg) { return arg; } 
} 
main() { 
    new C<A>(); 
    new C<B>(); 
    // does NOT work 
    // var t = A; 
    // new C<t>(); 
} 

,但类型参数还需要静态定义。您不能使用变量作为泛型类型参数。

2

总之:编号 Dart要求所有类都有一个超类。你所要求的是有一个类改变其超类每个实例。这不是一个单独的类 - 不可能说出这个类有哪些成员,因为这对于超类的选择实际上是一个不同的类。