Let say I have a generic member in a class or method, so:
public class Foo<T>
{
public List<T> Bar { get; set; }
public void Baz()
{
// get type of T
}
}
When I instantiate the class, the T
becomes MyTypeObject1
, so the class has a generic list property: List<MyTypeObject1>
. The same applies to a generic method in a non-generic class:
public class Foo
{
public void Bar<T>()
{
var baz = new List<T>();
// get type of T
}
}
I would like to know, what type of objects the list of my class contains. So the list property called Bar
or the local variable baz
, contains what type of T
?
I cannot do Bar[0].GetType()
, because the list might contain zero elements. How can I do it?
I use this extension method to accomplish something similar:
You use it like this:
This isn't quite what you're looking for, but it's helpful in demonstrating the techniques involved.
If you dont need the whole Type variable and just want to check the type you can easily create a temp variable and use is operator.
Consider this: I use it to export 20 typed list by same way:
If you want to know a property's underlying type, try this: