Именованные параметры путаницы - PullRequest
1 голос
/ 03 августа 2011

В следующем коде: (атрибут WebMethod в веб-сервисе)

[WebMethod(CacheDuration = 300)]
public string GetData(string Id)
{

}

Intellisense для конструктора класса атрибутов WebMethod показывает вторую перегрузку в качестве именованных параметров. Я сомневаюсь, что именованные значения параметров не указываются через двоеточие (:) после имени параметра. Почему здесь используется оператор равенства?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 03 августа 2011

Вы используете третий синтаксис, специфичный для атрибутов, в котором вы можете указать поля для инициализации в экземпляре атрибута, используя синтаксис Name = Value в вызове конструктора.

[WebMethod(cacheDuration: 300)]

будет работать так же хорошо, но он использует стандартный синтаксис именованных параметров вместо синтаксиса инициализации поля атрибута. Помните, что атрибуты существовали раньше, чем существовали именованные параметры.

0 голосов
/ 03 августа 2011

Я полагаю, что это связано со свойствами WebMethod.

Посмотрите на этот ДЕЙСТВИТЕЛЬНЫЙ код:

class TestAttribute : Attribute
{
    public int MyProperty { get; set; }
}
class Program
{
    [Test(MyProperty=300)]
    public void method1()
    {
    }
}

Если вы посмотрите на Метаданные для WebMethod, есть свойство под названием "CacheDuration».

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