he visto algunos ejemplos en los que transforman una llamada como¿Cuál es la ventaja de usar una llamada a generic-where-clause sobre una llamada no genérica?
void Add(IDrawing item);
en
void Add<TDrawing>(TDrawing item) where TDrawing : IDrawing;
lado engañando al intelisense en mostrar el nombre de su clase en lugar del nombre de la interfaz cuando se llama a la función, debido al uso de tipos inferidos en C# 4, ¿hay alguna otra ventaja al usar el segundo enfoque?
Para responder Jon Skeet, el código utilizado nuestro programador es:
public ObservableCollection<IDrawing> Items { get; private set; }
public void Add<TDrawing>(TDrawing item) where TDrawing : IDrawing
{
this.Items.Add(item);
}
no veo ninguna ventaja en este caso para el uso de un genérico en lugar de usar un parámetro del tipo IDrawing
. Supongo que debe haber algún caso donde sea muy apropiado. Tenía curiosidad por ver si me estaba perdiendo algo.
"Además de engañar al intellisense para que muestre el nombre de tu clase" ... maldición, no me di cuenta de que eso sería suficiente, eso es motivo suficiente para querer utilizar el segundo enfoque. – heisenberg
Nota secundaria: el término .NET es "genéricos"; son bastante diferentes a las "plantillas" de C++ o T4. –
Actualizado para usar genéricos. Lo siento, los viejos son viejos. –