Comme vous avez spécifié C# 2.0 alors je pense que la réponse sera que vous ne pouvez pas. C# est typé statiquement et ce code tape la collection générique à une collection de Item. Si Product était une superclasse de Item, je crois que vous pourriez les stocker dans cette collection, mais vous auriez besoin d'interroger le type d'objet lorsque vous l'avez récupéré de la collection car il reviendra toujours en tant qu'Article.
Je vais vous poser une question, qu'essayez-vous de réaliser dans ce remplacement dynamique et pourquoi? Il pourrait y avoir une meilleure réponse.
EDIT
En y repensant encore, après le commentaire, vous pourriez être en mesure de le faire en utilisant une interface, à savoir:
public IList myCollection { get; set; }
Je n'ai pas essayé, loin de ma station dev mais pourrait inciter d'autres à être d'accord ou à me corriger :)
Pourriez-vous poster le code pour GenericCollection, cela aiderait. – Lazarus