如何在C#类中使用@符号作为属性名

3

我正在实现一个特定的用例。我们有一个要求,在序列化对象中需要有@符号。有没有办法使属性名称中带有@符号?

我的类看起来像这样:

public class Test
{

    public string @name
}

当我序列化类时,我需要将值作为"@name" : "property的值"。有什么方法可以实现这个吗?
我已经尝试过MSDN链接

1
你要序列化成什么格式?XML?JSON? - D Stanley
你试图将这个类序列化成什么?Jinx @DStanley。你欠我一瓶可乐! - Icemanind
我认为XML和JSON都不支持以@开头的元素(C#也不支持...) - D Stanley
在C#中,@可以用于属性名称的开头,如果您需要一个通常是关键字的名称的属性,例如public int @if { get; set; },这将非常有用。但是,@实际上不会成为名称的一部分,它只是编译器的技巧。如果您通过反射查看属性,则其名称将为“if”。因此,我认为您将不得不手动进行序列化。 - vesan
1个回答

1

在属性名中不能包含文字@

在你提供的链接中描述标识符语法的 C# 语言规范中,它说标识符以@_字母字符开头:

  • 一个 Unicode 字符,其类别为 Lu、Ll、Lt、Lm、Lo 或 Nl
  • 表示 Lu、Ll、Lt、Lm、Lo 或 Nl 类别字符的 Unicode 转义序列

@ 符号属于 Unicode 类别 "标点符号、其他" [Po],因此不能出现在属性名称的开头(也不能出现在其余规范中的任何位置)。

前缀 @ 实际上并不是标识符的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接