Essa é uma maneira segura e eficiente de lidar com a leitura de valores nulos em um dB usando genéricos?

StackOverflow https://stackoverflow.com/questions/1438888

  •  10-07-2019
  •  | 
  •  

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;
    }
Foi útil?

Solução

Independentemente de Ttipo, 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top