ERRO DADOS SÃO NULL.

JOAOBENEVIDES 20/01/2017 22:18:02
#470910
OLA PESSOAL TENHO O SEGUINTE ERRO
Dados são Null. Não é possível chamar este método ou esta propriedade em valores Null.

como estou carregando

dr.GetString(dr.GetOrdinal([Ô]Telefone[Ô]));

esta em c# nao tenho nem nocao o banco de dados esta em sql server 2008

Obrigado
JOao
GUIMORAES 21/01/2017 08:40:36
#470915
if (dr[[Ô]Telefone[Ô]] != dbnull.value)
{
//aqui.
}
JOAOBENEVIDES 21/01/2017 09:03:51
#470917
guimoeares estou fazendo isto hem um monte de formuraio seria possivel passar isto para uma funçõa
GUIMORAES 21/01/2017 09:52:33
#470918
  

public static T GetValue<T>(object value) where T : struct
{
return value == DBNull.Value ? default(T) : (T)value;
}

//Como usar
seuAtributo = GetValue<string>(dr[[Ô]Telefone[Ô]]);

JOAOBENEVIDES 21/01/2017 14:25:17
#470921
nao consegui usar ten que criar um modulo uma funcao o erro que esta dando é este


this.Bairro = GetValue<String> (dr.GetOrdinal([Ô]Bairro[Ô])));

mais reclama erro abaixo

Severity Code Description Project File Line Suppression State
Error CS0453 The type [ô]string[ô] must be a non-nullable value type in order to use it as parameter [ô]T[ô] in the generic type or method [ô]Aluno.GetValue<T>(object)[ô] EuroDLL D:\Projeto\Programas\euroschool\Euroschool\EuroDLL\Classes\Metodos\MetodoAluno.cs 58 Active

KERPLUNK 23/01/2017 22:53:25
#470964
Resposta escolhida
JOAOBENEVIDES, o que o GUIMOARAES123 passou é um método de extensão, que será aplicado à object. Você simplesmente o adiciona em uma classe estática e ele estará disponível para ser usado.
GUIMORAES 24/01/2017 08:34:28
#470970
Citação:

:
JOAOBENEVIDES, o que o GUIMOARAES123 passou é um método de extensão, que será aplicado à object. Você simplesmente o adiciona em uma classe estática e ele estará disponível para ser usado.



Exato.
JOAOBENEVIDES 25/01/2017 11:01:05
#471015
na verdade nao estou sabendo criar este metodo de extensao, pode me explicar
KERPLUNK 25/01/2017 23:42:39
#471045
Criando uma classe estática e colocando o método nela. Como todo o método de extensão é estático, ele precisa necessariamente estar em uma classe estática. Essa classe geralmente possui vários outros métodos, conforme sua necessidade.

public static class MetodosExtensao
{
public static T GetValue<T>(object value) where T : struct
{
return value == DBNull.Value ? default(T) : (T)value;
}
}


Explicando métodos de extensão:
Ele é um método como qualquer outro. A diferença é a obrigatoriedade do primeiro argumento(parâmetro), que é o tipo de objeto ao qual ele se aplica. Especificamente no método desse post, é aplicado à object, ou seja, tudo. Mas você pode usar para tipos mais específicos. Como por exemplo:

public static double Soma(double valor, double ValorAdicionar)
{
return valor + ValorAdicionar;
}

No método acima, qualquer coisa que seja do tipo double, vai possuir [Ô]enxergar[Ô] o método Soma, que recebe um parâmetro, o valor à ser adicionado, por exemplo:

double valor = 1;
double somado = valor.Soma(99);

Neste caso, a variável [Ô]somado[Ô] terá o valor 100, pois é a soma do seu valor adicional(representado pelo primeiro argumento do método de extensão) e o valor à ser somado, que é o parâmetro passado ao método [Ô]Soma[Ô].
Tópico encerrado , respostas não são mais permitidas