public override IExportacao ObterTipoExportacao(TipoExportacaoEnum tipo) { // Isso é um padrão conhecido como Factory ou Factory Method switch (tipo) { case TipoExportacaoEnum.XML: return(new ExportacaoXML()); case TipoExportacaoEnum.TXT: return(new ExportacaoTXT()); case TipoExportacaoEnum.Json: return(new ExportacaoJson()); default: throw new ApplicationException(string.Format("Nenhum tipo conhecido foi solicitado", tipo)); } }
private void btnExportar_Click(object sender, EventArgs e) { try { var listaClientes = new ClienteRepository().GetListaClientes(); TipoExportacaoEnum tipo = (TipoExportacaoEnum)cboTipoExportacao.SelectedItem; var expo = new ExportarArquivo(); var caminhoCompleto = expo.ExportarArquivoPorTipo(tipo, txtCaminho.Text, listaClientes); MostrarArquivo(caminhoCompleto); MessageBox.Show("Exportação gerada com sucesso", "Exportação", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Ocorreu um erro: " + ex.Message, "Exportação", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public abstract IExportacao ObterTipoExportacao(TipoExportacaoEnum tipo);
public string ExportarArquivoPorTipo(TipoExportacaoEnum tipoExportacaoEnum, string caminho, List <Cliente> clientes) { var factory = new ConcreteExportacaoFactory().ObterTipoExportacao(tipoExportacaoEnum); return(factory.Exportacao(caminho, clientes)); }