Как я могу использовать NotNullWhen с новым синтаксисом расширения?C#

Место общения программистов C#
Anonymous
Как я могу использовать NotNullWhen с новым синтаксисом расширения?

Сообщение Anonymous »

У меня есть метод расширения IsNullOrWhiteSpace, определенный как:

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

public static class StringExtensions
{
public static bool IsNullOrWhiteSpace([NotNullWhen(false)] this string? s) =>
string.IsNullOrWhiteSpace(s);
}
Я хочу переписать это, используя новый синтаксис расширений. Проблема в том, что я хочу сообщить компилятору, что если s не равно нулю, этот метод возвращает false. Я не понимаю, как это сделать.
Райдер предлагает изменить его на

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

public static class StringExtensions
{
extension([NotNullWhen(false)] string? s)
{
public bool IsNullOrWhiteSpace() => string.IsNullOrWhiteSpace(s);
}
}
что, очевидно, не будет работать.
Я думал об использовании атрибута MemberNotNullWhen вот так

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

public static class StringExtensions
{
extension(string? s)
{
[MemberNotNullWhen(false, nameof(s))]
public bool IsNullOrWhiteSpace() => string.IsNullOrWhiteSpace(s);
}
}
но это не работает, потому что s не является членом.
Есть ли способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ion-syntax

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