Surcharger les méthodes génériques

Lors de l'appel d'une méthode générique pour le stockage d'un objet, il y a parfois besoin de gérer un type spécifique différemment. Je sais que vous ne pouvez pas surcharge basée sur les contraintes, mais aucune autre alternative semble présenter ses propres problèmes.

public bool Save<T>(T entity) where T : class
{ ... some storage logic ... }

Ce que j'aimerais faire, c'est quelque chose comme ce qui suit:

public bool Save<SpecificClass>(T entity)
{ ... special logic ... }

Dans le passé, notre équipe a créé "one-off" méthodes pour l'enregistrement de ces classes comme suit:

public bool SaveSpecificClass(SpecificClass sc)
{ ... special logic ... }

Toutefois, si vous ne SAVEZ pas que la fonction existe, et vous essayez d'utiliser le générique (Enregistrer) ensuite, vous pouvez exécuter dans une foule de problèmes que le "one-off" était censé résoudre. Cela peut être aggravé si un nouveau développeur qui vient, voit le problème avec les génériques, et décide qu'il va fixer avec son propre d'une fonction d'arrêt.

Donc...

Quelles sont les options pour travailler autour de ce qui semble être question commune?

Que j'ai regardé, et utilisé UnitOfWork et maintenant ce qui semble être la seulement option qui en fait résout le problème, mais semble comme attaquant une mouche avec un marteau de forgeron.

source d'informationauteur Patrick Dench