时间:2019-04-29 09:53:02

标签: c# constructor attributes

这行代码有效,但是我不确定为什么会这样做。

[JsonProperty("id", Required = Required.Always)]

对我来说,这似乎是在Property类中设置JsonProperty的值。这仅对Attributes和声明属性唯一吗?

看着JsonProperty类,我可以看到构造函数是这样写的

 public JsonPropertyAttribute(string propertyName);

再次,这是如何工作的?这似乎与我过去一年编写C#的方式背道而驰。Attribute类中的魔术是魔术还是C#的功能?

1 个答案:

答案 0 :(得分:1)

这些是Named Arguments,它们并不是属性唯一的。

C#4介绍了它们:

  

带名称的参数使您可以通过将参数与参数的名称而非参数在列表中的位置相关联来为特定参数指定参数。

C#6.0引入了Named Parameters,与属性等效。

  

属性类可以具有位置参数和命名参数。每个属性类的公共实例构造函数都为该属性类定义一个有效的位置参数序列。