Olá pessoal, tudo bem.
Estou abrindo este tópico como sugestão para melhorias nas classes de alto nível para C#, visto que estão trabalhando na refatoração delas com esta notícia Refatoração das Classes de Alto nível C#.
Estou pegando como exemplo a lib NFe, mas entendo que o mesmo se aplica para as demais.
Hoje são gerados 2 pacotes Nuget (ACBrLib.NFeMT e ACBrLib.NFe), que entendo ser estes:
- https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/C%23/NFe/Imports/Dinamico/
A ideia seria ter 3 projetos, 1 Core/Shared e outros 2 para MT e ST, onde abre a possibilidade para referenciar o Core somente onde existe a implementação de lógica e o ST/MT ser referenciado nos projetos que farão a referência com a DLL propriamente dito.... Por exemplo eu posso ter 1 projeto que faz toda a parte fiscal, incluindo a emissão, porém posso referenciar ele em uma API (usando o MT para instanciar a implementação correta da DLL) e um outro projeto no PDV rodando localmente (usando o ST).
Dando um exemplo real nosso, é que fazemos emissões fiscais tanto via API quanto em uma aplicação que roda no cliente para suporte offline, ambas compartilhando a mesma lógica (outro projeto que referencia o ACBr), porém a implementação da impressão do DANFE Resumido recebemos uma resposta que somente funcionaria com a versão ST, neste caso somente conseguiríamos fazer duplicando código.
Valeu galera !