匿名类型中的特殊字符

Mat*_*son 5 c# asp.net asp.net-mvc-3

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

例如我有这个:

new { status = "Active" }
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

new { status = "Active", $exists = true }
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*Joe 2

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

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

Lu、Ll、Lt、Lm、Lo 或 Nl 类的 Unicode 字符

根据这条规则:

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

使用此表,第三列告诉我们“$”属于“Sc”类,因此您不能使用它。

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

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

  1. 修复您的 API 规范,使其不依赖于您所使用的语言中无效标识符的密钥(痛苦)
  2. 编写一个简单的翻译层,在发送 JSON 之前重写它(混乱)