如何检索带有元数据标记的函数

2024-06-22

看下面的代码片段。

import "dart:mirrors";

class meta {
    final String data;

    const meta(this.data);
}


@meta("Tag")
doSomething() => print("You have to do something");

void main() {
    doSomething();
}

我如何检索功能,即带有元数据标签的市场?在我的示例中,我想找出哪个方法标记有元标记。


你可以这样做:

void main() {
    doSomething();
    getMetaData();
}

void getMetaData() {
  LibraryMirror currentLib = currentMirrorSystem().libraries.values.last;
  currentLib.declarations.forEach((Symbol s, DeclarationMirror mirror) {
    if(mirror.metadata.length > 0) {
      print('Symbol $s has MetaData: "${mirror.metadata.first.reflectee.data}"');
    }
  });
}

这应该给你:

You have to do something
Symbol Symbol("doSomething") has MetaData: "Tag"

您还可以分析另一个项目中的文件,并在该文件上使用 dart:mirrors,而不是检查当前库。或许libraries.values.last并不总是返回当前的库 - 所以你可能需要更改它。就我而言,它有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检索带有元数据标记的函数 的相关文章

随机推荐

  • 根据屏幕尺寸自定义命名字体大小

    在 xamarin forms 应用程序中 如何根据默认字体大小自定义命名字体大小 因为默认字体大小对我不起作用 mainScale LabelFontSize Device GetNamedSize NamedSize Large typ
  • 在 Cypress 中,使用 POST 请求发送表单数据不起作用

    赛普拉斯的新手 正在尝试作为公司的概念验证 当我通过 POST 请求无法测试 React 应用程序时 我遇到了一个问题 以下是赛普拉斯电子应用程序中收到的错误消息 超时重试 cy wait 第一次超时等待 5000 毫秒 请求路由 form
  • Android 8 Oreo 中 WifiManager 的 startscan 方法未收到响应

    根据 Android 官方文档 WifiManager 的 startScan 方法在 API 级别 P 中已被弃用 但是我尝试在 API 级别 26 P 之前 中使用此方法 但没有成功 我开发了一个应用程序 如果用户同意所需的权限 则需要
  • 如何防止 DOM 操作后页面滚动位置重置?

    我有两个 JS 函数 一个是向选择框添加选项 function addOption selectId text value var selectbox document getElementById selectId var optNew
  • 如何将atan2()与其他Radian角度系统结合使用

    我在 JavaScript 中遇到了这个问题 但这个问题也适用于许多其他语言 环境 我想让一个对象朝着另一个对象的位置旋转 我使用 atan2 obj1 dy obj1 dx obj2 getRotation 检查第二个对象在给定时间是否应
  • 未提示下载 CSV 文件

    我在 WordPress 中创建了一个自定义解决方案 它将生成一个 CSV 文件 通过单击直接链接到该文件的简单超链接即可下载 而不是提示将文件下载到计算机 CSV 在浏览器窗口中打开 FWIW 我在 Media Temple 上使用 Wo
  • iText Pdf 页面字节大小

    我有一个业务需求 要求我将 pdf 拆分为多个文档 假设我有一个 100MB 的 pdf 为了简单起见 我需要将其分成多个不大于 10MB 的 pdf 我正在使用 iText 我要获取原始pdf 并循环浏览页面 但是如何确定每个页面的文件大
  • 为什么外部类不能扩展内部类?

    为什么我不能这样做 是否有解决方法来完成此操作 package myPackage public class A public class B package myPackage import myPackage A B public cl
  • Mono.Addin 实现不检索插件

    我正在使用 Mono Addins 框架 C 和 Visual Studio 2010 编写一个可扩展的应用程序 我的应用程序的结构如下 项目1 namespace Plugins TypeExtensionPoint public int
  • 解析节点的 CSS 属性

    也许我的 google fu 今天让我失望了 但我还没有找到一种方法来解析节点的任意属性以获得样式属性 例如 我希望能够询问节点 fx fill 的值是多少 如果有 一个简单的应用程序示例 我想为图表构建自定义图例 为此 我必须向渲染节点询
  • Django 访问 OneToOneField

    做了一个扩展用户的视图 class Client models Model user models OneToOneField User related name user def unicode self return s self us
  • Javascript 作为一种函数式语言

    我正在寻求掌握函数式编程概念 我多年来一直在 Web 应用程序中使用 Javascript 进行客户端脚本编写 除了使用原型之外 它都是简单的 DOM 操作 输入验证等 最近 我有经常阅读 http eloquentjavascript n
  • 矩形上的文本会消除矩形的悬停效果

    我有几个具有悬停效果的 svg 矩形 当鼠标悬停在矩形上时 矩形的背景颜色会发生变化 悬停效果通过css设置 myclass hover fill rgb 255 128 0 除此之外 文本放置在每个矩形上方 一对文本和矩形定义一个组
  • 如何检测linux机器上是否安装了tomcat和ant

    我正在尝试安装Tomcat and Ant在我的 Linux 机器上 但在安装它们之前我只需要检查它们是否已经安装 关于Tomcat 我用谷歌搜索了很多 并在我的机器上的以下目录中搜索了 tomcat usr local opt usr s
  • 使用 R 中的 arules 包进行重复交易的关联分析

    我想创建一个篮子格式的交易对象 我可以随时调用它进行分析 该数据包含包含 1001 笔交易的逗号分隔项目 前 10 笔交易如下所示 hering corned b olives ham turkey bourbon ice crea bag
  • 高速公路无法导入名称错误

    我已经使用安装了twisted和Autobahn websocket pip install twisted pip install autobahn 但是当我从高速公路导入任何工厂时 我收到无法导入名称错误 gt gt gt from t
  • 查找top-k元素的平均时间复杂度

    考虑在一组 N 个独立且同分布的浮点值中查找前 k 个元素的任务 通过使用优先级队列 堆 我们可以对所有 N 个元素进行一次迭代 并通过以下操作维护一个 top k 集合 如果元素 x 比堆头 更差 丢弃 x 复杂度 O 1 如果元素 x
  • make - 在同一个 eval 调用中定义多个变量

    我想用make s eval函数在一个内部定义多个 动态命名的 变量foreach 但我无法得到eval来做这项工作 我尝试过这样的事情 eval var1 val1 var2 val2 它不起作用 var1被定义为val1 var2 va
  • Rails 博客引擎 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 寻找一个支持文章管理的简单博客引擎 我有独立的 Rails3 2x 应用程序和身份验证系统 我必须为网
  • 如何检索带有元数据标记的函数

    看下面的代码片段 import dart mirrors class meta final String data const meta this data meta Tag doSomething gt print You have to