C# 设置DataMember名称的目的是什么

C# 设置DataMember名称的目的是什么,c#,.net,wcf,C#,.net,Wcf,这听起来可能是一个非常愚蠢的问题,但我在谷歌搜索后没有找到合适的答案 当您可以使用属性名直接访问Datamember时,显式设置数据成员名的目的是什么,如Datamember属性旁边的括号中所示 [DataMember(Name = "Status")] public string Status { get; set; } 事实上,这些都很好: Name属性使您能够使用不允许作为名称的名称 公共语言运行库(CLR)标识符。此外,此属性 使类型编写器能够定义独立于 CLR成员名称。这个单独的定义

这听起来可能是一个非常愚蠢的问题,但我在谷歌搜索后没有找到合适的答案

当您可以使用属性名直接访问Datamember时,显式设置数据成员名的目的是什么,如Datamember属性旁边的括号中所示

[DataMember(Name = "Status")]
public string Status { get; set; }
事实上,这些都很好:

Name属性使您能够使用不允许作为名称的名称 公共语言运行库(CLR)标识符。此外,此属性 使类型编写器能够定义独立于 CLR成员名称。这个单独的定义有助于版本控制 场景(在不中断数据的情况下更改CLR成员名称 合同),并允许对数据联系人使用不同的命名约定 成员和CLR成员

事实上,这些都很好:

Name属性使您能够使用不允许作为名称的名称 公共语言运行库(CLR)标识符。此外,此属性 使类型编写器能够定义独立于 CLR成员名称。这个单独的定义有助于版本控制 场景(在不中断数据的情况下更改CLR成员名称 合同),并允许对数据联系人使用不同的命名约定 成员和CLR成员


Datamember.Name只是以序列化形式定义此属性的表示形式

例如,如果您序列化为JSON,这非常方便,因为在JavaScript中,您通常希望使用camelCased变量,而在C中,您的模型应该具有PASCALCASE名称


另外,阅读中的注释也可能有助于您理解这一点。

Datamember.Name只是以序列化形式定义此属性的表示形式

例如,如果您序列化为JSON,这非常方便,因为在JavaScript中,您通常希望使用camelCased变量,而在C中,您的模型应该具有PASCALCASE名称


另外,阅读中的备注也可能有助于您理解这一点。

您阅读了吗?它非常明确:当应用于类型的成员时,指定该成员是数据协定的一部分,并且可由DataContractSerializerMost相关部分序列化:默认情况下,CLR成员名称用作数据成员的名称。通过设置Name属性,您可以自定义数据成员的名称是的,这就是我所寻求的为什么自定义名称会有帮助。假设Status属性是自解释的,为什么我要向datamember添加名称。只需将Datamember添加到Status属性中,即可使其序列化。我更关心的是,如果没有这些自定义名称,将无法实现这些使用场景。您阅读了吗?它非常明确:当应用于类型的成员时,指定该成员是数据协定的一部分,并且可由DataContractSerializerMost相关部分序列化:默认情况下,CLR成员名称用作数据成员的名称。通过设置Name属性,您可以自定义数据成员的名称是的,这就是我所寻求的为什么自定义名称会有帮助。假设Status属性是自解释的,为什么我要向datamember添加名称。仅将Datamember添加到Status属性将使其可序列化。我更关心的是,如果没有这些名称自定义,将无法实现这些使用场景。请参阅竞争答案。请参阅竞争答案。