/// <summary>
 /// Método responsável pelo cadastro de novas pessoas
 /// </summary>
 /// <param name="pessoa">Recebe o objeto de pessoa</param>
 public void Cadastrar(PessoaModel pessoa)
 {
     //para o objeto static, fizemos esta logica para a cada nova pessoa, adicionar um novo Id
     var id = 1;
     //vai incrementando a variavel até que nao existir
     while (_listPessoas.Any(x => x.Id == id))
         id++;
     pessoa.Id = id;
     //adiciona a pessoa no nosso banco fantasia
     _listPessoas.Add(pessoa);
 }
        public void Cadastrar(PessoaModel pessoa)
        {
            try
            {
                new PessoaNeg().Cadastrar(pessoa);
                
            }
            catch (Exception)
            {

                throw;
            }
        }
        public void Atualizar(PessoaModel pessoa)
        {
            try
            {
                new PessoaNeg().Atualizar(pessoa); 

            }
            catch (Exception)
            {

                throw;
            }

        }
        /// <summary>
        /// Método Responsável por Atualizar uma pessoa existente
        /// </summary>
        /// <param name="pessoa"></param>
        public void Atualizar(PessoaModel pessoa)
        {
            //pega em nosso banco fantasia aquela pessoa existente
            var pessoaDadoAnterior = GetById(pessoa.Id);
            if (pessoaDadoAnterior != null)
            {
                //usando reflection, pegamos todas as propriedades que nao sejam ID
                //e adicionamos o novo valor do objeto
                foreach (var propertyInfo in typeof(PessoaModel)
                    .GetProperties().Where(x => x.Name != "Id"))
                {
                    //obejto antigo
                    //segundo parametro é onde vai setar o novo valor
                    propertyInfo.SetValue(pessoaDadoAnterior, propertyInfo.GetValue(pessoa));
                }
            }

        }