Как получить упрощенный ReturnType через MethodInfo?

Используя отражение для получения MethodInfo, я хочу получить более удобную для пользователя версию ReturnType для некоторой самостоятельной документации.

В настоящее время этот methodInfo.ReturnType.Name возвращает что-то вроде Dictionary2 or IEnumerable1.

Хотя этот methodInfo.ReturnType.FullName; возвращает слишком длинную версию, например System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral]]

or System.Collections.Generic.IEnumerable`1[[ProjectName.Namespace.Item, ProjectName, Version=1.9.0.0, Culture=neutral, PublicKeyToken=null]]

Теоретически я мог бы выполнить некоторые манипуляции со строками, чтобы избавиться от всей отображаемой лишней информации, но я хотел бы избежать этого, если это возможно.


person Ganon    schedule 10.08.2020    source источник
comment
Отвечает ли это на ваш вопрос? C# Получить имя универсального типа . Проверьте ответ с наибольшим количеством голосов там   -  person Renat    schedule 10.08.2020
comment
Да, этот ответ был именно тем, что я искал! Спасибо.   -  person Ganon    schedule 10.08.2020


Ответы (1)


с небольшим количеством манипуляций со строками вы можете легко создать красивое имя самостоятельно рекурсивно:

private static string NiceName(Type t)
{
    var indexOfH = t.Name.IndexOf('`');
    return (indexOfH >= 0 ? t.Name.Substring(0, indexOfH) : t.Name) + (t.IsGenericType ? $"<{string.Join(",", t.GenericTypeArguments.Select(NiceName))}>" : "");
}
person trykyn    schedule 10.08.2020