В C# 7.3 можно ли написать атрибут параметра метода, который изменяет аргумент до выполнения метода тела?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 В C# 7.3 можно ли написать атрибут параметра метода, который изменяет аргумент до выполнения метода тела?

Сообщение Anonymous »

Я обнаружил, что я регулярно trim () -ing ляпоты из строковых значений, передаваемых в мои функции. Обычно это выглядит как: < /p>

Код: Выделить всё

public void MyFunction(string param) {
if (param != null) { // Null check is necessary since we are in C# 7.3.
param = param.Trim();
}

// ...now we can work with "param" safely.
}
< /code>
Я знаю, что этот нулевой промежуточный плюс-трим может быть сокращена до одной линии, но я думаю, что можно было бы сделать его еще проще, используя атрибут параметра. Можно ли украсить параметр с атрибутом для обработки этой нулевой проверки и обрезки вне содержимого метода?public void MyFunction([Trim] string param) {
// ...[Trim] replaces "param" with a trimmed version, if "param" is not null.

// ...now we can work with "param" safely.
}

public void MyOtherFunction(string paramOne, [Trim] string paramTwo) {
// "paramOne" remains untrimmed, "paramTwo" is trimmed.
}

// How would one write this hypothetical TrimAttribute in C# 7.3? Is it even possible?
< /code>

Примечания: < /p>
[list]
[*] Я начинаю подозревать, что это может быть невозможно, по крайней мере, без некоторых внешних зависимостей. Например, я знаю, что ASP.NET MVC предлагает ActionFilterAttribute 
, который обеспечивает доступ к параметрам метода в классе ActionExeCutingContext . Но ActionFilterAttribute может украсить только класс или метод, а не параметр. Кроме того, возможность свободно изменять аргумент с атрибутом может открыть множество возможностей для злоупотреблений со стороны разработчиков, поэтому понятно, если такая вещь невозможно.
[/list]

Подробнее здесь: https://stackoverflow.com/questions/795 ... hat-modifi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»