我想在变量名中创建一个带有特殊字符的匿名类型

例如我有这个:

new { status = "Active" }

我想要类似的东西
new { status = "Active", $exists = true }

这最终会序列化为 JSON,所以我知道我可以使用 JObject 或类似的东西,但作为匿名类型会容易得多。

最佳答案

你必须遵守规则!您的代码将无法编译,因为您将其作为代码中的匿名类型(而不是字符串)编写,因此键必须是语言中的标识符。

语言有规律。标识符必须以有效的 identifier-start-character 开头,定义为:



按照这个规则:

http://www.jaggersoft.com/csharp_grammar.html#identifier-start-character

使用这个表,第三列告诉我们 '$' 在 'Sc' 类中,所以你不能使用它。

http://www.unicode.org/Public/UNIDATA/UnicodeData.txt

如果我是你,我会做以下三件事之一:

  • 修复您的 API 规范,因此它不依赖于您使用的语言中无效标识符的键(痛苦)
  • 编写一个简单的翻译层,在它被发送之前重写你的 JSON(困惑)
  • 关于c# - 匿名类型中的特殊字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10387087/

    10-13 03:13