Это безопасный и эффективный способ обработки чтения нулевых значений в БД с использованием Generics?
Вопрос
Я играл с дженериками и надеялся получить отзывы или предложения по функции, которую я создал, чтобы справиться с чтением нулевых значений из БД. Моя главная проблема заключается в утверждении if. Есть ли лучший способ узнать, является ли T строковым т. Д.? Спасибо.
public static T CheckNull<T>(object value)
{
if ((value != null) && value.Equals(DBNull.Value))
{
if (object.ReferenceEquals(typeof(T), typeof(String)))
value = string.Empty;
else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
value = false;
else
value = null;
}
return (T)value;
}
Решение
Независимо от типа T
, вы можете вернуться к default (T)
, который предоставит значение по умолчанию для данного типа ( , string.Empty
0
, false
, null
и т. д.):
value = default(T);
Изменить: default (string)
, однако, возвращает null
.
Другие советы
Вам также необходимо охватить другие примитивные типы данных.
value = default(T);
Возвращает значение null, если это ссылочный тип, иначе 0, false или любое другое подходящее значение по умолчанию для данного типа T.
Примечание. по умолчанию (строка): null
, а не string.Empty. Если вы хотите, чтобы это было String.Empty
, вам нужно реализовать это как исключение.