2017-02-17 54 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 ' 我的代码库过于庞大和复杂,使所有这些打字的变化,我看不到好处。我无视规则。过去我一直在与强大的模式斗争,这是实施这种模式的动力。在此之前,我重写了字段类型,这对我来说似乎是一个首选解决方案。 –