Você não faz DRY porque alguém escreveu em um livro em algum lugar que é bom fazer, você faz DRY porque na verdade tem benefícios tangíveis.
Especificamente dessa pergunta:
Se você se repetir, poderá criar problemas de manutenção. Se todos os doStuff1-3 tiverem código estruturado da mesma forma e você resolver um problema em um, você poderá facilmente esquecer de corrigi-lo em outros lugares. Além disso, se você precisar adicionar um novo caso para lidar, basta passar parâmetros diferentes para uma função em vez de copiar e colar em todo o lugar.
No entanto, o DRY é frequentemente levado ao extremo por programadores inteligentes. Às vezes, para não se repetir, é necessário criar abstrações tão obtusas que seus colegas de equipe não possam segui-las. Às vezes, a estrutura de duas coisas é apenas vagamente semelhante, mas diferente o suficiente. Se o doStuff1-4 for diferente o suficiente, de modo que refatorá-los para não se repetir faz com que você precise escrever um código não natural ou sofrer backflips de codificação inteligentes que farão com que sua equipe o ofenda, então pode ser bom repetir-se. Eu me inclinei para trás para não me repetir algumas vezes de maneiras não naturais e me arrependi do produto final.
Então, basicamente, não pense "oh cara, esse código é bem parecido, talvez eu deva refatorar para não me repetir". Pense "a refatoração para fazer com que essa base de código reutilize elementos comuns torna o código mais sustentável ou menos sustentável ?" Em seguida, escolha o que o torna mais sustentável.
Dito isto, considerando o SRP e apenas tentando ter classes pequenas e flexíveis em geral, pode fazer sentido analisar seu código por esse motivo , separar partes do comportamento que usam tipos genéricos (você disse que eles são idênticos, exceto o tipo) em turmas pequenas. Depois, você descobrirá que algumas dessas classes são totalmente idênticas (não apenas idênticas) e, em seguida, poderá criar um kit de ferramentas, caso deseje adicionar Microsoft.CodeAnalysis.CPlusPlus.Syntax.AttributeSyntax
.