2015-11-02 213 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要求所有類都有一個超類。你所要求的是有一個類改變其超類每個實例。這不是一個單獨的類 - 不可能說出這個類有哪些成員,因爲這對於超類的選擇實際上是一個不同的類。