You don't build generics dynamically using type. Generics are filled in with a the name of the class, not a type.
You could use Activator.CreateInstance to create a generic type. You'll have to build the generic type dynamically.
To create a generic type dynamically.
Type listFactoryType = typeof(GenericListFactory<>).MakeGenericType(elementType);
var dynamicGeneric = (IListFactory)Activator.CreateInstance(listFactoryType);
Instead of getting the List using a generic method, you could create a generic class that exposes that method. You could derive from an interface like so.
interface IListFactory
{
IList GetList();
}
class GenericListFactory<T>
{
public IList GetList() { return new List<T>(); }
}