Bah si toutes tes méthodes sont définies dans une classe comme tu sembles l'indiquer, et si tu peux modifier le code de cette classe, ce n'est pas très compliqué vu que tu n'as qu'à rajouter le contrat d'interface dans la déclaration et tu gagnes automatiquement le comportement générique pour les types supportés. Sinon tu devras effectivement quand même réécrire du code quelque part, ce qui est... moins idéal on va dire, mais tu peux le fourrer dans la même classe. (celle offrant les implémentations par défaut par exemple, vu que c'est toi qui en écrit le code)
(Bon d'ailleurs je viens de voir que j'ai inversé la priorité "Type définit lui même la méthode" avec "Méthode standard disponible" je vais éditer ça

)