2017-02-17 7 views
0

Dart 1.22.0の新しいインスタンス化のバインドルールに関連する問題があります。私はBaseModelクラスを持っており、ParentTypeというパラメータ化された型をとります。それ自体はBaseModelです。Dart 1.22.0のネストされたパラメータ化された型バインドされた新しい規則のインスタンス化

すべてのBaseModelに特定のParentTypeがあるわけではありません.ParentTypeとしてBaseModelをインスタンス化すると、無限のルールが破損します。この問題は、開発上の任意の影響を持っているように見えていないとして、私は今のルールを無視するつもりです

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

はあなたが達成したいものに少し依存しますが、あなたはParentModelBaseModelのいずれかの種類として使用できるようにしたいと仮定すると、(どこ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' 私のコードベースは、これらの入力の変更のすべてを作るために、あまりにも大規模かつ複雑である、と私は利益が表示されない拡張を拡張します。私はルールを無視して辞任しています。私は過去に強烈なモードで苦労しました。これは、このパターンを最初から実装するための原動力でした。この前に、私はフィールドタイプをオーバーライドしていました。これは私にとっては好ましい解決策のようです。 –

関連する問題