Мне любопытно, как проверить, является ли данный тип закрытой версией открытого типа. Например
public bool IsGenericList(Type source)
{
return (source.IsGenericType &&
/*here goes the manipulation on source type*/ == typeof(List<>));
}