2008-12-22 7 views
3

Comment initialiser une liste contenant des objets génériques dont les types peuvent être différents?Initialiser un objet générique avec un type inconnu

Par exemple, je donne les résultats suivants:

this.Wheres = new List<Where<>>(); 

Comme vous le savez, <> n'est pas une syntaxe valide. Cependant, parfois le type transmis à Où sera une chaîne et parfois ce sera DateTime, etc. J'ai essayé d'utiliser l'objet comme type initialisé, mais cela ne fonctionne pas non plus.

Répondre

10

Eh bien, vous n'avez pas contexte vraiment assez donné (ce qui est SQLWhere?), Mais normalement vous souhaitez utiliser un paramètre de type:

public class Foo<T> 
{ 
    private IList<T> wheres; 

    public Foo() 
    { 
     wheres = new List<T>(); 
    } 
} 

Si vous voulez une collection unique pour contenir plusieurs types non apparentés de valeurs, cependant, vous devrez utiliser List<object>

+0

Merci! Et pour répondre à votre question, Où est une classe dans le générateur de requête. –

1
this.Wheres = new List<Object>(); 
+0

Cela va ajouter (non) la boxe et supprimer la sécurité de type. – lacop

+0

Comment pouvez-vous empêcher cela si la liste peut être composée de différents types d'objets? – Sergio

+0

C'est la bonne façon de faire ce que l'OP a demandé. Oui, ce n'est pas sécurisé. Ce n'est pas la faute de la réponse. –

Questions connexes