Utilisation de la Réflexion pour définir une Propriété avec un type de Liste<CustomClass>
Comment puis-je utiliser la réflexion pour créer une Liste générique avec une classe personnalisée (List<CustomClass>)? J'ai besoin d'être en mesure d'ajouter des valeurs et de l'utilisation
propertyInfo.SetValue(..., ..., ...)
pour le stocker. Serais-je mieux de les stocker une Liste<>'s certains autres structures de données?
Edit:
J'aurais du précisé que l'objet est plus comme ça, mais Marc Gravel réponse fonctionne encore.
class Foo
{
public List<string> Bar { get; set; }
}
est une chaîne vraiment une classe personnalisée? J'espérais que vous seriez parler de quelque chose comme l'utilisation de la réflexion pour appeler une classe Maclasse qui a une propriété qui est une Liste<SomeOtherClass> où SomeOtherClass est une classe que j'ai fait qui a un tas de propriétés et les constructeurs etc...
Ok, donc la chaîne était un mauvais choix pour une classe, mais il a suffi qu'une explication. On peut remplacer chaîne avec à peu près toute la classe de la mesure de mes faibles connaissances en va, mais au cas ou j'en avais besoin, la classe et le type dans la liste sont trouvés par la réflexion.
Ok, donc la chaîne était un mauvais choix pour une classe, mais il a suffi qu'une explication. On peut remplacer chaîne avec à peu près toute la classe de la mesure de mes faibles connaissances en va, mais au cas ou j'en avais besoin, la classe et le type dans la liste sont trouvés par la réflexion.
OriginalL'auteur dragonjujo | 2008-11-24
Vous devez vous connecter pour publier un commentaire.
si le code que vous avez là de la compilation? Je me dit que j'ai encore besoin de fournir la déclaration de la IList avec un type... IList<typeof(type)> ou quelque chose, je ne sais pas?
Je peux faire var liste = Activateur.CreateInstance(typeof(List<>).MakeGenericType(GetListType(p.ParameterType))); Mais je ne semble pas pour obtenir une liste des en retour depuis la liste ne semble pas avoir une méthode Add...
manquant en utilisant le système.collection;
Par souci de concision, il n'est pas rare d'omettre le
using
déclarations.OriginalL'auteur Marc Gravell
Voici un exemple de prendre la Liste des<> le type et le transformer en une Liste<string>.
var liste = typeof(List<>).MakeGenericType(typeof(string));
OriginalL'auteur Neil