Array
(
)

C# - Retornar campo e valor de campo de um objeto dentro de outro objeto

Gustavo Zoffoli
   - 12 jul 2011

Boa tarde pessoal.

Estou implementando uma rotina de auditoria aqui e preciso salvar todos os campos e valores de uma entidade.

Exemplo:

public class Usuario : Base
    {
        public virtual string Nome { get; set; }
        public virtual string Login { get; set; }
        public virtual string Senha { get; set; }
        public virtual bool Ativo { get; set; }
        public virtual DateTime DataCadastro { get; set; }
        public virtual Empresa Empresa { get; set; }
        public virtual String Email { get; set; }
    }

para salvar, estou fazendo o seguinte:

string campos;
var propriedades = entidade.GetType().GetProperties();
foreach (var propriedade in propriedades)
{
      campos += propriedade.Name + ":" + propriedade.GetValue(entidade, null) + ";" + System.Environment.NewLine;
}

porém, o problema é quando preciso pegar o campo empresa, que é outra entidade...como devo proceder para pegar esse campo e o id que está dentro do mesmo ?
Como essa rotina vai ser usada em todas as tabelas, não tenho como saber quais são os objetos sempre que vou salvar, então preciso de uma solução genérica...
Obrigado