跳到主要內容

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 {}