Après un peu de programmation, une de mes classes utilisait des génériques d'une manière que je n'avais jamais vue auparavant. J'aimerais avoir des opinions à ce sujet, si c'est un mauvais code ou non.Utilisation bizarre de génériques
abstract class Base<T> : where T : Base<T>
{
// omitted methods and properties.
virtual void CopyTo(T instance) { /*code*/ }
}
class Derived : Base<Derived>
{
override void CopyTo(Derived instance)
{
base.CopyTo(instance);
// copy remaining stuff here
}
}
est-ce une utilisation correcte des génériques ou non? Je pense surtout à la contrainte de "se". J'ai parfois l'impression que les génériques peuvent «exploser» dans d'autres classes où j'utilise la classe de base.
En fait ce n'est pas vraiment rare, je l'ai déjà vu ... –
C'est ce que génèrent les génériques. J'exposerais probablement une interface pour la rendre encore plus abstraite. –
Pourquoi avez-vous besoin que le type T soit une base? Je n'ai vu aucune raison pour cela dans votre échantillon, en fait je n'arrive pas à comprendre pourquoi vous l'utilisez, est-ce que quelque chose me manque? –