From 3ce5cb079a318c2ab858e273f3c51d5faa505a9a Mon Sep 17 00:00:00 2001 From: Filipe Moreira <54115686+filipe-moreira@users.noreply.github.com> Date: Sun, 28 Jun 2026 15:42:19 -0300 Subject: [PATCH] fix(mdfe): MDFeInfEvento aceita MDFeConfiguracao via construtor Resolve uso incorreto em ambientes multi-tenant / DI. A classe capturava VersaoServico lendo do singleton "MDFeConfiguracao.Instancia" no construtor, ignorando o cfgMdfe passado pelo caller. Em sistemas com Dependency Injection (Scoped), o singleton nao e configurado por design, e a primeira chamada a ServicoMDFeEvento quebrava com "Versao invalida do mdf-e". Obs: construtor sem args continua delegando para MDFeConfiguracao.Instancia. --- MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs | 10 +++++++++- MDFe.Servicos/EventosMDFe/FactoryEvento.cs | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs b/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs index 51a7b2549..5ed0b6209 100644 --- a/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs +++ b/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs @@ -14,7 +14,15 @@ namespace MDFe.Classes.Informacoes.Evento public class MDFeInfEvento { [XmlIgnore] - private readonly VersaoServico _versaoServico = MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + private readonly VersaoServico _versaoServico; + + public MDFeInfEvento() : this(null) { } + + public MDFeInfEvento(MDFeConfiguracao cfgMdfe) + { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + _versaoServico = config.VersaoWebService.VersaoLayout; + } [XmlAttribute(AttributeName = "Id")] public string Id { get; set; } diff --git a/MDFe.Servicos/EventosMDFe/FactoryEvento.cs b/MDFe.Servicos/EventosMDFe/FactoryEvento.cs index fae1817b5..769120db8 100644 --- a/MDFe.Servicos/EventosMDFe/FactoryEvento.cs +++ b/MDFe.Servicos/EventosMDFe/FactoryEvento.cs @@ -15,7 +15,7 @@ public static MDFeEventoMDFe CriaEvento(MDFeEletronico MDFe, MDFeTipoEvento tipo var eventoMDFe = new MDFeEventoMDFe { Versao = config.VersaoWebService.VersaoLayout, - InfEvento = new MDFeInfEvento + InfEvento = new MDFeInfEvento(config) { Id = "ID" + (long)tipoEvento + MDFe.Chave() + sequenciaEvento.ToString("D2"), TpAmb = config.VersaoWebService.TipoAmbiente,