2010-11-02 23 views
3

est-il possible de déclarer une classe dynamiquement? est-il possible de créer une liste générique avec une classe anonyme en C#? des extraits de code aideront. merciComment déclarer une classe dynamiquement? C#

+12

Il est possible, mais il est probablement pas ce que vous cherchez. Qu'essayez-vous de faire? – SLaks

+0

désolé je n'étais pas assez clair. la chose je ne sais pas quelles propriétés ma classe aura. Je reçois la liste des propriétés nécessaires dynamiquement. – danyloid

Répondre

5

La déclaration dynamique d'une classe nécessite CodeDom.

est-il possible de créer une liste générique avec une classe anonyme en C#?

Oui, mais il n'est généralement pas recommandé de l'utiliser en dehors du contexte immédiat. Par exemple, cela crée une liste générique d'un type anonyme:

var range = Enumerable.Range(0, 100); 

var genericList = range.Select(value => new { Value = value }).ToList(); 

Dans le code ci-dessus, est un genericListList<T> contenant un type anonyme.

+0

'CodeDom' est génial, mais il y a souvent une déconnexion entre les fonctionnalités du langage et ce que' CodeDom' supporte (par exemple les champs 'readonly'). 'System.Reflection.Emit' est le chemin à parcourir pour un contrôle total, bien que plus compliqué. –

+0

@Steve: True - mais une fois que les gens comprennent CodeDom, ils peuvent généralement trouver Emit si nécessaire ... –

5

Comme SLaks mentionné dans les commentaires, c'est possible. Mais c'est non trivial. Je ne suis pas sûr de ce que vous essayez de faire, mais vous pouvez facilement ajouter types anonymes à une liste générique d'objets.

List<object> list = new List<object>(); 
for(int i = 0; i < 10; i++){ 
    list.Add(new { SomeProperty = i, OtherProperty = "foobar" }); 
}