2009-10-14 7 views
0

J'ai un contrôle mycontrol.ascxC# Type Dynamique dans une propriété GenericCollection

Ce contrôle a une propriété:

private GenericCollection<Item> myCollection; 
public GenericCollection<Item> MyCollection 
{ 
    get { return myCollection; } 
    set { myCollection= value; } 
} 

Est-ce que quelqu'un sait comment je pourrais changer dynamiquement à partir du type Point-à-dire le type de produit?

+0

Pourriez-vous poster le code pour GenericCollection, cela aiderait. – Lazarus

Répondre

0

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 :)

+0

Merci. MyControl.ascx est un contrôle de pagination qui parcourt les collections. Je veux avoir un seul contrôle de pagination sur mon site qui accepte des collections de différents types. – Frawls

+0

public IList myCollection Travaillé parfaitement! Très bien. À votre santé – Frawls

1

Vous ne pouvez pas. L'une des idées principales avec les génériques est qu'ils sont de type sûr. Si vous voulez pouvoir modifier le type qui est stocké MyCollection, vous devrez utiliser un type à partir duquel sont dérivés les codes Item et Product.

Questions connexes