Как установка значения свойства в вызове конструктора работает с JsonProperty? - PullRequest
0 голосов
/ 29 апреля 2019

Эта строка кода работает, но я не уверен, почему это так.

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

Мне кажется, это установка значения Property в классе JsonProperty. Это уникально только для Attributes и объявления атрибутов?

Глядя на класс JsonProperty, я вижу, что конструктор написан так

 public JsonPropertyAttribute(string propertyName);

Опять же, как это работает? Кажется, это противоречит тому, как я писал на C # в прошлом году. Это волшебство в классе Attribute или это особенность C #?

1 Ответ

1 голос
/ 29 апреля 2019

Это Именованные аргументы , и они не являются уникальными для атрибутов.

C # 4 представил их:

Именованные аргументы позволяют указать аргумент для конкретного параметра, связав аргумент с именем параметра, а не с позицией параметра в списке параметров.

C # 6.0 введено Именованные параметры , которые являются эквивалентами для атрибутов.

Классы атрибутов могут иметь позиционные параметры и именованные параметры. Каждый открытый конструктор экземпляра для класса атрибута определяет допустимую последовательность позиционных параметров для этого класса атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...