Ir para conteúdo
  • Cadastre-se

Recommended Posts

  • Consultores
Postado


Projeto  ACBr está refatorando as classes ACBrLib C#

Olá comunidade image.png.c66a8e350a15080739793c08a9f4af!

O Projeto ACBr iniciou a refatoração das classes de alto nível em C#, mantendo a compatibilidade com o .NET 4.5
As mudanças ocorrerão ao longo do ano de 2026.


Principais mudanças

  • Desacoplamento usando interfaces: agora cada classe de alto nível terá sua interface (IACBrLibCEP, IACBrLibNFe, ...);
  • Uso da interface IACBrLibBase;
  • Substituição da classe ACBrLibHandle por ACBrLibBase;
  • ACBrLibHandle será depreciada e removida
  • Remoção do selamento das classes ACBrLib
 
Programas exemplo:
  • Os demos terão pastas de build (output) próprias para ST e MT;
  • Serão atualizados para .NET. 4.8.
  • Exemplo:
// Pasta de saída para demo MT
trunk2\Projetos\ACBrLib\Demos\C#\Mail\Demo\ACBrLibMail.Demo\bin\MT\Debug
  
// Pasta de saída para demo ST
trunk2\Projetos\ACBrLib\Demos\C#\Mail\Demo\ACBrLibMail.Demo\bin\ST\Debug

 Fases da refatoração

Obs.: Até a presente data, 02/03/2026 concluímos a fase II

Fase I ✅

Refatoração da ACBrLib.Core com inclusão da classe ACBrLibBase e da interface IACBrLibBase.

Além disso, foram expostos os métodos `Inicializar`,`Finalizar` e `OpenSSLInfo` nas classes ST e MT.

Nessa fase, foi adicionada uma camada de compatibilidade entre as classes filhas de ACBrLibHandle e ACBrLibBase.

Fase II ✅ 

  • Classes filhas de ACBrLibHandleBase carregarão a ACBrLib em modo thread safe.
  • Refatoração das classes MT mais usadas;
  • Inclusão das interfaces IACBrLib.
  • Lista atualizada  em 02/03/2026

Já foram atualizados: 

  1. ACBrNFe;
  2. ACBrNFSe;
  3. ACBrCEP;
  4. ACBrMDFe;
  5. ACBrPIXCD;
  6. ACBrPosPrinter;
  7. ACBrBAL;
  8. ACBrBoleto;
  9. ACBrConsultaCNPJ;
  10. ACBrCTe;
  11. ACBrGTIN;
  12. ACBrETQ;
  13. ACBrIBGE;
  14. ACBrReinf;
  15. ACBrNCMs;
  16. ACBrMail;
  17. PIXMatera;
  18. Sedex.

ACBrPosPrinter

Agora, o método Inicializar é responsável por instanciar o componente!

Método usado para preparar o buffer para impressão agora é InicializarPos().

Essa alteração visa corrigir a ambiguidade causada pelos argumentos opcionais do método Inicializar():

public interface IACBrLibBase {
	// permite a chamada sem argumentos, exemplo: Inicializar();
	void Inicializar(string eArquivoConfig = "", string eChaveCrypt= "");
}

Exemplo:

//versões anteriores a 1.0.9
ACBrPosPrinter pos = new ACBrPosPrinter("[Memory]", "");
pos.Inicializar(); // metódo antigo (inicializar buffer)

// ACBrLib.PosPrinter >=v1.0.9
ACBrPosPrinter pos  =  new ACBrPosPrinter("[Memory]", "");
pos.InicializarPos();

 

ACBrReinf

Outra modificação importante aconteceu em ACBrReinf, na interface IACBrLibReinf o método para configurar o TipoContribuinte é SetTipoContribuinte.

Exemplo:

// versões anteriores a 1.0.8
ACBrReinf reinf = new ACBrReinf("","");
reinf.TipoContribuinte(cmbTipoContribuinte.SelectedIndex); 

IACBrLibReinf reinf = new ACBrReinf("","");
reinf.SetTipoContribuinte(cmbTipoContribuinte.SelectedIndex);  // >= 1.0.8

Depreciados

 ACBrSAT e ACBrSATMT foram depreciados.

O código fonte e o programa exemplo dessa classe serão removidos na fase V.

Exemplo:

// exemplo de uso
IACBrLibCEP cep = new ACBrLibCEP("[Memory]", "");

Fase III 

Atualização da interface IACBrLibBase para incluir os métodos Nome(), Versao() e UltimoRetorno().

 Nessa fase, serão removidos os campos ( fields / properties ) `Nome` e `Versao` das classes ST

Exemplo:
 

ACBrNFe nfe = new ACBrNFe("[Memory]", "");
Console.WriteLine(nfe.Nome); // Removido

// Novo método:
IACBrLibNFe nfe = new ACBrNFe("[Memory]", "");
Console.WriteLine(nfe.Nome());

Fase IV 

 Descontinuação da classe ACBrLibHandle.

Fase V 

  • Separação dos pacotes ACBrLibX.Common com recursos compartilhados em ST e MT, incluindo a interface IACBrLibX;
  • Nessa fase, os pacotes serão publicados com a versão 2.0.0;
  • Recursos compartilhados, como interfaces, classes de resposta e de notas fiscais, terão seu próprio pacote;

A chamada do método `Inicializar` será obrigatória após instanciar a ACBrLib.

Exemplo:

using ACBrLib.NFe;
using ACBrLib.NFe.Common;

IACBrLibNFe nfe = new ACBrNFe("[Memory]", "");
try {
    nfe.Inicializar();
} catch (Exception e) {
    // tratamento de erro
}

Exemplo de recurso compartilhado:

using ACBrLib.Core;
namespace ACBrLib.NFe.Common {
  
  public interface IACBrLibNFe : IACBrLibBase {
    	ACBrNFeConfig Config { get; }
    	void CarregarNota(NotaFiscal nfe);
  }
}
  • Curtir 8
  • Obrigado 1
  • danieloliveira-mm changed the title to Projeto ACBr está refatorando as classes C#
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.