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>)