Вопрос

Допустим, у вас есть MethodInfo, относящийся к методу myMethod:

void myMethod(int param1, int param2) { }

и вы хотите создать строку, представляющую сигнатуру метода:

string myString = "myMethod (int, int)";

Перебирая параметры MethodInfo, я смог добиться этих результатов, вызвав методы ToString типов параметров:

"myMethod (System.Int32, System.Int32)"

Как я могу улучшить это и добиться результатов, показанных выше?

Это было полезно?

Решение

Этот вопрос был задан ранее, и это может проделать через API Codeedom.Смотрите Это и Это .Обратите внимание, что эти ключевые слова (INT, BOOL и т. Д.) являются специфическими языком, поэтому, если вы выводят это для общего потребления .NET потребителя, которые обычно предпочтительны имена структурных типов.

Другие советы

Насколько я знаю, нет ничего встроенного, что могло бы преобразовать настоящий введите имя примитива (System.Int32) на встроенный псевдоним (int).Поскольку таких псевдонимов очень мало, написать собственный метод не так уж и сложно:

public static string GetTypeName(Type type) 
{
    if (type == typeof(int))  // Or "type == typeof(System.Int32)" -- same either way
        return "int";
    else if (type == typeof(long))
        return "long";
    ...
    else
        return type.Name;     // Or "type.FullName" -- not sure if you want the namespace
}

При этом, если пользователь действительно делал введите System.Int32 скорее, чем int (что, конечно, было бы совершенно законно) этот метод все равно выведет «int».Вы мало что можете с этим поделать, потому что System.Type в любом случае одинаково, поэтому у вас нет возможности узнать, какой вариант на самом деле набрал пользователь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top