Dobrze, że to dlatego, że nazwa typu w .NET faktycznie JEST List'1. "1" jest tak zwanym aritem generycznego i informuje o liczbie parametrów typu.
Jest to potrzebne, aby można było utworzyć więcej niż 1 ogólny typ o tej samej "nazwie", ale o innej liczbie ogólnych parametrów typu.
Na przykład istnieje więcej niż jeden typ "o nazwie" System.Action. Prawdziwe nazwy to System.Action'1, System.Action'2, System.Action'3 itd.
Jeśli więc wiesz, że Twój typ jest ogólny, możesz założyć, że jest to XX Koniec nazwy, więc możesz odciąć tę część, na przykład:
string strTypeName = typeof(List<>).Name.Substring(0, typeof(List<>).Name.LastIndexOf("`"));
PS: Proszę zastąpić "z".
Należy nieco poprawić. Argument ogólny powinien być sformatowany w ten sam sposób, może to być typ ogólny. Oczywiście powinno to wspierać wiele ogólnych argumentów. –
Byłem w trakcie pisania bardziej skomplikowanej wersji, która obsługiwała to i wielokrotności, które właśnie napisałem. – Erich
Edytowany ponownie w celu użycia agregatów. Sprawdź historię edycji, jeśli chcesz "starą" wersję. Funkcjonalność jest identyczna, ale chciałem dowiedzieć się, jak działa agregacja, a to był dobry sposób na naukę :) – Erich