Close this search box.

Creating generic type object dynamically using reflection

I had a problem some time ago. I needed to create generic type object dynamically. I couldn’t find how to do it. Now, when I know, I can share the mysterious knowledge.

public static object CreateGeneric(Type generic, Type innerType,
                                   params object[] args) {
  System.Type specificType =
      generic.MakeGenericType(new System.Type[] { innerType });
  return Activator.CreateInstance(specificType, args);

To create a genric List of string, use the following code:

CreateGeneric(typeof(List<>), typeof(string));

If the generic type constructor requires parameters, they can be passed to the CreateGeneric method.

The CreateGeneric method supports only one generic argument but it can be easily modified to support more (e.g. creation of Dictionary<T, U>)

This article is part of the GWB Archives. Original Author: Marcin Celej

Related Posts