Bueno, eso es porque el nombre del tipo en .NET realidad ES List'1. El '' 1 '' es la llamada aridad del genérico, y te dice cuántos parámetros de tipo hay.
Es necesario para que pueda crear más de 1 tipo genérico con el mismo "nombre" pero una cantidad diferente de parámetros de tipo genérico.
Por ejemplo, hay más de 1 tipo "llamado" System.Action. Los nombres reales de estos son System.Action'1, System.Action'2, System.Action'3, etc.
Por lo tanto, si sabe que su tipo es genérico, puede suponer que existe este 'XX en al final del nombre, por lo que sólo podría cortar esta parte de distancia, por ejemplo, así:
string strTypeName = typeof(List<>).Name.Substring(0, typeof(List<>).Name.LastIndexOf("`"));
PD: por favor, reemplace 'con'.
Debería mejorarse un poco. El argumento genérico debe formatearse de la misma manera, podría ser un tipo genérico de nuevo. Por supuesto, debe admitir muchos argumentos genéricos. –
Estaba en el proceso de tipear una versión más compleja que manejaba eso y múltiplos, que acabo de publicar. – Erich
Editado nuevamente para usar agregados. Verifique el historial de edición si quiere la versión 'anterior'. La funcionalidad es idéntica, pero quería averiguar cómo funcionaba el agregado, y esta era una buena forma de aprender :) – Erich