HiveBrain v1.2.0
Get Started
← Back to all entries
snippetcsharpCritical

How to get the type of T from a member of a generic class or method

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
howfromclassmemberthemethodgenerictypeget

Problem

Let's say I have a generic member in a class or method, like so:

public class Foo
{
    public List 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. The same applies to a generic method in a non-generic class:

public class Foo
{
    public void Bar()
    {
        var baz = new List();
        
        // get type of T
    }
}


I would like to know what type of objects the list of my class contains. So what type of T does the list property called Bar or the local variable baz contain?

I cannot do Bar[0].GetType(), because the list might contain zero elements. How can I do it?

Solution

If I understand correctly, your list has the same type parameter as the container class itself. If this is the case, then:

Type typeParameterType = typeof(T);


If you are in the lucky situation of having object as a type parameter, see Marc's answer.

Code Snippets

Type typeParameterType = typeof(T);

Context

Stack Overflow Q#557340, score: 912

Revisions (0)

No revisions yet.