代码之家  ›  专栏  ›  技术社区  ›  Jacob Phillips

DART分析器:查找类或其子类的实例

  •  0
  • Jacob Phillips  · 技术社区  · 7 年前

    我用的是 build 要接受的包 .dart 文件并查找某个类或其子类的定义。罐头 ClassElement 也用于子类?

    我只期望在项目的一个文件中有一个特定类的单一定义,但是客户机没有理由不能进行子类化和疯狂化。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Nate Bosch    7 年前

    没有直接获取所有子类的方法,但是您可以找到所有类并检查每个类是否都是您感兴趣的子类。

    从获得 LibraryElement 为其生成代码的文件 BuildStep.inputLibrary . 从那里找到图书馆里所有的课程 var classes = libraryElement.units.expand((cu) => cu.types); . 然后通过检查 ClassElement 对于你感兴趣的类型 ClassElement.allSupertypes 对于您要检查的类型。 var subtypes = classes.where((c) => c.allSupertypes.contains(lookingFor)); .

    你可以找到 LibraryReader TypeChecker 公用设施来自 source_gen 有用。

    推荐文章