跳到主要内容

extension_type_inherited_member_conflict

扩展类型“{0}”从实现的类型中拥有多个名为“{1}”的不同成员。

描述

#

当扩展类型实现两个或更多其他类型,并且其中至少两个类型声明了同名成员时,分析器会生成此诊断信息。

示例

#

以下代码会生成此诊断信息,因为扩展类型 C 同时实现了 AB,并且两者都声明了一个名为 m 的成员

dart
class A {
  void m() {}
}

extension type B(A a) {
  void m() {}
}

extension type C(A a) implements A, B {}

常见修复方法

#

如果扩展类型不需要实现列出的所有类型,则移除除一个之外所有引入冲突成员的类型

dart
class A {
  void m() {}
}

extension type B(A a) {
  void m() {}
}

extension type C(A a) implements A {}

如果扩展类型需要实现列出的所有类型,但你可以重命名这些类型中的成员,则为冲突成员指定唯一的名称

dart
class A {
  void m() {}
}

extension type B(A a) {
  void n() {}
}

extension type C(A a) implements A, B {}