2017-02-17 49 views
0

我有一個與Dart 1.22.0中的新實例化到綁定規則相關的問題。我有一個BaseModel類,它採用名爲ParentType的參數化類型,該類型本身擴展爲BaseModel使用Dart 1.22.0嵌套參數化類型新實例化到綁定規則

不是所有的BaseModel都有一個特定的ParentType,如果我將BaseModel實例化爲ParentType,那麼我會得到無限的規則中斷。

下面是一個例子:

abstract class BaseModel<ParentType extends BaseModel> { 
    ParentType parentModel 
} 

class ParentModel extends BaseModel<BaseModel<...>> {} 

class ChildModel extends BaseModel<ParentModel> {} 

我會被忽略的規則,現在因爲這個問題似乎並沒有對發展產生任何影響。

回答

0

這可能會做你想要什麼:

abstract class BaseModel<ParentType extends BaseModel<Null>> 
+0

這似乎適用於非常簡單的示例,但它不適用於我更復雜的BaseModel關係。 –

+0

你能用一個具體的例子更新你的問題嗎? –

2

取決於你想完成什麼了一點,但假設你想ParentModel是可以像任何一種BaseModel(其中parentModel場總是會null),那麼這可能是你想要什麼:

abstract class BaseModel<ParentType extends BaseModel<ParentType>> { 
    ParentType parentModel; 
} 

class ParentModel extends BaseModel<Null> {} 

class ChildModel extends BaseModel<ParentModel> {} 

如果不是這樣,我需要更多地瞭解你的問題的約束和目標。

+0

這滿足了基本示例的分析器,但它打破了我具有更復雜繼承的地方。 '類ParentModel 擴展ChildModel ' '類ChildModel擴展BaseModel ' 我的代碼庫過於龐大和複雜,使所有這些打字的變化,我看不到好處。我無視規則。過去我一直在與強大的模式鬥爭,這是實施這種模式的動力。在此之前,我重寫了字段類型,這對我來說似乎是一個首選解決方案。 –