Después de un poco de programación, una de mis clases usaba genéricos de una manera que nunca antes había visto. Me gustaría obtener algunas opiniones sobre esto, si es una codificación incorrecta o no.Uso extraño de genéricos
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
}
}
¿Es este un uso correcto de los genéricos o no? Estoy pensando principalmente en la restricción para "sí mismo". A veces siento que los genéricos pueden "explotar" en otras clases donde utilizo la clase Base.
En realidad no es raro, lo he visto antes ... –
Para eso están los genéricos. Sin embargo, probablemente exponga una interfaz para hacerlo aún más abstracto. –
¿Por qué necesita el tipo T para ser una Base? No vi ninguna razón para eso en tu muestra, en realidad no puedo entender por qué estás usando eso, ¿es algo que me estoy perdiendo? –