Well, you can have two types of parameters:
public static T Parse<T, U>(string datadictionary) where T : List<U>
This way you can also find out what U is (at compile time) ...
EDIT: Alternatively (and better) just specify the type of the element and change the type of the return value:
public static List<T> Parse<T>(string datadictionary)
eg.
List<int> data = Parse<int>(whatever);
, List<T> IList<T> .