Disons que j'ai un membre générique dans une classe ou une méthode, donc:Comment obtenir le type de T d'un membre d'une classe ou méthode générique?
public class Foo<T>
{
public List<T> Bar { get; set; }
public void Baz()
{
// get type of T
}
}
Quand j'instancier la classe, le T
devient MyTypeObject1
, de sorte que la classe a une propriété de liste générique: List<MyTypeObject1>
. De même pour une méthode générique dans une classe non générique:
public class Foo
{
public void Bar<T>()
{
var baz = new List<T>();
// get type of T
}
}
Je voudrais savoir, quel type d'objets la liste de ma classe contient. Ainsi, la propriété de liste appelée Bar
ou la variable locale baz
, contient quel type de T
?
Je ne peux pas faire Bar[0].GetType()
, car la liste peut contenir zéro élément. Comment puis-je le faire?
Lol - oui, très vrai; J'ai supposé que l'OP avait seulement 'object',' IList', ou similaire - mais cela pourrait très bien être la bonne réponse. –
J'aime la lisibilité de 'typeof'. Si vous voulez connaître le type de T, il suffit d'utiliser 'typeof (T)' :) – demoncodemonkey
En fait, je viens d'utiliser typeof (Type) et cela fonctionne très bien. – Anton