当前位置: 首页 > 知识库问答 >
问题:

如何从C#引用带有美元符号的标识符?

阎功
2023-03-14

我试图使用ikvmc从Scala代码编译的jar文件生成的DLL(是的,我的日子过得很好)。Scala编译器似乎为操作符重载生成包含美元符号的标识符,而IKVM使用生成的DLL中的标识符(我可以在Reflector中看到)。问题是,美元符号在C#代码中是非法的,所以我不能引用那些方法。

有办法解决这个问题吗?

共有1个答案

柳钟展
2023-03-14

您应该能够使用反射访问时髦的方法。这不是一个好的解决方案,但至少应该能奏效。根据DLL中API的结构,在方法周围创建一个包装器来本地化反射代码可能是可行的。然后从其余的代码中调用nice wrapper。

另一种方法是攻击目标DLL中的IL并更改标识符。或者对自己的代码进行一些构建后的IL黑客攻击。

 类似资料:
  • 问题内容: 我从Google的数据API获取JSON提要,并且许多属性名称以$字符(美元符号)开头。 我的问题是我无法使用以美元符号开头的变量名称创建C#类,该语言不允许这样做。我正在使用Newtonsoft的JSON.NET将JSON转换为C#对象。我该如何解决这个问题? 问题答案: 您可以尝试使用属性指定名称:

  • 问题内容: 我想要grep ,我希望结果是 为了区分,我将提示标记为。 这里有什么问题? 应该采取什么 grep的字符串 是什么? 问题答案: 问题在于外壳程序在双引号字符串内扩展了变量名。因此,它尝试读取以first开头的变量名。 另一方面,单引号中的变量不会扩展。因此,如果不是因为在正则表达式中表示行尾的特殊字符这一事实,那 将是 可行的。因此需要进行转义:。

  • 家长和孩子通过Angular.io官方指南中的服务示例进行交流。io在可观察的流名称中使用美元符号。 注意<代码> missionAnnounced $ < /代码>和<代码> mi 有人能解释一下吗: < li >为什么使用< code>$?这个符号背后的原因是什么?我总是需要对公共属性使用这个吗? < li >使用公共属性,但不使用方法(例如missionAnnouncements()、mis

  • 我不明白。我使用了在互联网上找到的所有替换方法,包括我能找到的所有堆栈溢出。我甚至试过\u0024!发生了什么?

  • 你可通过在映射文档中使用反向引号(`)把表名或者字段名包围起来,以强制 Hibernate 在生成的 SQL 中把标识符用引号包围起来。Hibernate 会使用相应的 SQLDialect(方言)来使用正确的引号风格(通常是双引号,但是在 SQL Server 中是括号,MySQL 中是反向引号)。 <class name="LineItem" table="`Line Item`">

  • 问题内容: 我有这个: JSONLint表示这是完全有效的json。但是执行时出现错误。 但是,如果我将代码更改为: (请注意双反斜杠) 它可以工作,但是现在JSONLint表示。 有人可以帮助您了解这种行为吗? 问题答案: 有线格式和您必须在代码中编写的格式之间是有区别的。当您在代码中声明此代码时,您需要在文字中使用双-\,以便字符串获得一个反斜杠(否则,它将\\解释为一个转义序列,仅声明一个“