Troca de Informações Confidenciais

Estava eu trabalhando em um projeto com WCF  (Windows Communication Foundation) onde queria retornar uma classe mais simples de dado, por exemplo sem tantas propriedades.

Qual foi a minha primeira ideia (e que executei), criar uma interface, por exemplo:

public interface IPessoa
{
string Nome { get; }
int Idade { get; }
}

E criei a classe:

public class Pessoa : IPessoa
{
public string Nome { get; set; }
internal DateTime DataNascimento { get; set; }
public int Idade { get; { return Convert.ToInt32((DateTime.Today -      DataNascimento).TotalDays / 365.0);}}
}

O legal é que tudo parece funcionar, o serviço compila e tudo mais. Pena que não é a maneira correta alem de não funcionar. O correto é criar apenas uma classe e colocar atributos sobre os elementos que devem ser serializados, assim:
[DataContract]
public class Pessoa : IPessoa
{
public Pessoa(string nome, DateTime dataNascimento)
{
Nome = nome;
DataNascimento = dataNascimento;
Idade = Convert.ToInt32((DateTime.Today - DataNascimento).TotalDays / 365.0);
}
[DataMember]
public string Nome { get; set; }
public DateTime DataNascimento { get; set; }
[DataMember]
public int Idade { get; set; }
}

Também é bem simples e nesse caso funciona.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s