Essa é uma maneira segura e eficiente de lidar com a leitura de valores nulos em um dB usando genéricos?
Pergunta
Eu tenho jogado com genéricos e esperava poder obter alguns comentários ou sugestões sobre uma função que criei para ajudar a lidar com os valores nulos do banco de dados. Minha principal preocupação é na declaração IF. Existe uma maneira melhor de descobrir se t é um string etc.? Obrigado.
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;
}
Solução
Independentemente de T
tipo, você pode voltar para default(T)
que fornecerá o valor padrão para o tipo fornecido (, string.Empty
0
, false
, null
, etc ...):
value = default(T);
Editar: default(string)
no entanto, retorna null
.
Outras dicas
Você também precisa cobrir outros tipos de dados primitivos.
value = default(T);
Este retorno nulo se for um tipo de referência, caso contrário, 0, falso ou o que for um valor padrão apropriado do tipo dado T.
Observação: padrão (string) é null
, não String.Empty. Se você quer que seja String.Empty
, você precisa implementar isso como uma exceção.