//formato de gravação (CSV, XML, JSON, outro separador qualquer)
        public void Gravar(ISerializador <Carro> serializer)
        {
            var nomeArquivo = Path.Combine(Environment.CurrentDirectory, $"carros.{serializer.Extensao}");

            //abrir o arquivo para escrita e associar um escritor a ele
            using (var file = File.OpenWrite(nomeArquivo))
                using (var escritor = new StreamWriter(file))
                {
                    //percorrer a lista, serializar o item e colocar no arquivo
                    foreach (var carro in Todos)
                    {
                        escritor.WriteLine(serializer.Serialize(carro));
                    }
                }//chama implicitamente escritor.Dispose() e file.Dispose(), nesta ordem!
        }
        public bool Gravar(string numero, ISerializador serializador, IGeradorHash hashgenerator)
        {
            if (!Directory.Exists(Diretorio))
            {
                Directory.CreateDirectory(Diretorio);
            }

            long totalVotos =
                (
                    from string v in Directory.GetFiles(Diretorio)
                    where (!v.Contains("vld"))
                    select v
                ).Count();

            var voto = new { Numero = numero, ValidacaoFile = $"vt_{totalVotos + 1}.vld" };

            try
            {
                string votoSerializado = serializador.Serialize(voto);

                string votoPath = Path.Combine(Diretorio, $"vt_{totalVotos + 1}.vt");

                using (StreamWriter sw = new StreamWriter(votoPath))
                {
                    sw.Write(votoSerializado);
                }

                string hash = hashgenerator.GerarHash(votoPath);

                string validacaoPath = Path.Combine(Diretorio, $"vt_{totalVotos + 1}.vld");

                using (StreamWriter sw = new StreamWriter(validacaoPath))
                {
                    sw.Write(hash);
                }

                return(true);
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("Erro", ex.Message);

                return(false);
            }
        }