Get class definition from type

c#, generics, reflection

Solution

You are looking for `MakeGenericType` method

var secondListType = typeof(List<>).MakeGenericType(aType);
var secondList = (List<T>)Activator.CreateInstance(secondListType);

Problem

I have a situation where I'd like to be able to pass a Type as a generic parameter. My problem is that once I use typeof() to obtain a Type, I cannot figure out how to get this back into a form that would allow me to pass it as a generic parameter, even though the type is still a class type. The below is purely to demonstrate my issue, I'm not actually calling typeof() on something that's already constrained as a class type: ``` public void Example<T>() where T : class { //This works fine. var firstList = new List<T>(); Type aType = typeof(T); //This resolves to true. bool thisIsTrue = aType.IsClass; //This does not compile?!? var secondList = new List<aType>(); } ``` Answering any of the following questions would likely solve my issue: -- Is there a command similar to typeof(), .GetType(), etc., that would allow me to constrain the result to a class, so the compiler would accept it for a generic parameter? Then I could avoid the issue of going from type to class altogether. -- Is there actually a way to transform a type into a class? I couldn't find a way to do it from either the type or an instantiated object of said type. -- As a last resort, am I going to need to dynamically define these classes at runtime to actually get this to work?

Original source