Ответ 1
но есть ли что-нибудь лучше?
Нет, хотя я бы сказал, что то, что вы описываете в вопросе (методы расширения), абсолютно нормально. И, как вы описываете в вопросе, в другом направлении у вас есть коллапс.
есть много раз, когда у меня есть входной текст,
и если его пустой (пользователь не напечатал какой-либо текст) - я хочу отправить запрос БД "null",
а не String.Empty.
( или "")
поэтому я нахожу, что сам делаю это много:
var mySqlValue = string.IsNullOrEmpty( tbCustomerId.Text)?null:tbCustomerId.Text;
это кажется мне уродливым.
.net дает множество других решений для противоположных сценариев:
string.IsNullOrEmpty
string.IsNullOrWhiteSpace
myProblemVal ?? myDefultVal
Я знаю, что это можно решить с помощью методов расширения - и я знаю, как это сделать.
но есть ли что-нибудь лучше?
есть ли интеллектуальный код для: " if its empty → null
".
но есть ли что-нибудь лучше?
Нет, хотя я бы сказал, что то, что вы описываете в вопросе (методы расширения), абсолютно нормально. И, как вы описываете в вопросе, в другом направлении у вас есть коллапс.
Вы можете использовать метод расширения:
public static class Extensions {
public static string NullIfWhiteSpace(this string value) {
if (String.IsNullOrWhiteSpace(value)) { return null; }
return value;
}
}
Что вы можете использовать так:
var mySqlValue = tbCustomerId.Text.NullIfWhiteSpace();
Я действительно не знаю, что вы представляете, чем-то лучше, чем методы расширения. Как вы определяете "лучше"? Более короткие? Использование специального ключевого слова? Использование редко используемых операторов, чтобы выглядеть умным? Это уже один вызов метода, добавленный к вашему значению, который даже работает с нулевыми значениями, а необходимая логика не может быть выражена короче, чем это. Кроме того, я не знаю какого-либо специального синтаксиса для него.
Объявите свой собственный статический метод:
public static string NullIfEmpty(string value)
{
return string.IsNullOrEmpty(value) ? null : value;
}
дела
MyHelper.NullIfEmpty (значение) не является более уродливым, чем вызов статического метода строкового типа... И он кажется более чистым, чем каждый раз писать "string.IsNullOrEmpty(tbCustomerId.Text)? Null: tbCustomerId.Text".