Dart:用作mixin的类和用于常量实例的基类

时间:2015-02-23 02:10:31

标签: dart const mixins

我有一个类,我想主要用作具有常量实例的其他类的基类,但也作为其他类的mixin类。理想情况下,我喜欢以下内容:

class Base{ 
  someMethod(){
    //do something
  }
}

class ConstantClass extends Base{
  const ConstantClass();

  anotherMethod(){
    //do something else
  }
}

class MixedClass extends NonMixinClass with Base{
  thirdMethod(){
    //a third thing
  }
}

上面有一个错误,即ConstantClass在没有调用超类常量构造函数的情况下不能有常量构造函数。但是,如果我向Base()添加任何类型的构造函数,它就不能用作mixin。

我目前的解决方法是在静态方法中复制功能,如下所示:

class Base{
  const Base();
  static someStaticMethod(Base base){
    //do something
  }

  someMethod() => Base.someStaticMethod(this);
}

class ConstantClass extends Base{
  const ConstantClass(): super();

  anotherMethod(){
    //do something else
  }
}

class BaseMixin implements Base{
  someMethod() => Base.someStaticMethod(this);
}

class MixedClass extends NonMixinClass with BaseMixin{
  thirdMethod(){
    //a third thing
  }
}

当基类中只有一个函数时,这并不是太糟糕,但对于复杂的类来说,事情变得非常冗长,如果有一种解决问题的简单方法,我会喜欢保持清洁。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我虽然class ConstantClass extends Object with Base {会这样做,但我得到的新错误是#34;不能为具有mixin"的类声明常量构造函数。所以我在这里没有看到解决方案,但没有使用const构造函数。