DEV Community

Cover image for Como definir contratos para importação de arquivos texto com C#?
Vinícius Mamoré
Vinícius Mamoré

Posted on • Edited on

Como definir contratos para importação de arquivos texto com C#?

Olá! Tudo bem?

Recentemente necessitei de uma funcionalidade onde lia arquivos texto e criava objetos. Estava fazendo um trabalho bem repetitivo e minhas classes que instanciavam os objetos, precisavam saber em qual posição do array deveria buscar para setar nas propriedades:

Alt Text
Meu arquivo texto.

Dessa forma:
Alt Text

Assim, pensei na possibilidade de minhas classes DTOs definirem nas propriedades quais posições do arquivo os valores delas estava. Criei um atributo para setar nas propriedades e passar o index que o valor dela está no array:

Alt Text

E defini os atributos nas propriedades:

Alt Text

Agora que minha classe já sabe em qual posição da linha do arquivo o valor dela está definido, eu preciso setar o valor com base na posição dela. Criei uma classe abstrata que no construtor, receberia o array da linha lida e setaria os valores nas propriedades:

Alt Text

Por fim, nossa classe DTO, ficaria dessa forma e nosso método que o instancia, mais enxuto e sem a necessidade de saber quais propriedades setar:

Alt Text

Alt Text

Acredito que tenha perdido um pouco de performance por conta do uso de Reflection, farei um post comparando com o BenchmarkDotNet, entretanto conseguimos generalizar o comportamento necessário.

É isto! Você vê alguma forma que posso melhorar meu código ou outra abordagem? Comenta aí!

Até mais!

Top comments (0)