0

メソッドmyMethodに関連するMethodInfoがあるとします。

void myMethod(int param1, int param2) { }

メソッドのシグネチャを表す文字列を作成するとします。

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

MethodInfoパラメーターをループして、パラメータータイプのToStringメソッドを呼び出すことでこれらの結果を得ることができました。

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

どうすればこれを改善して上記の結果を得ることができますか?

4

2 に答える 2

0

私の知る限り、プリミティブ()の実際の型名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.Int32intもちろん完全に合法です)、この手法でも「int」が出力されます。どちらの方法でも同じであるため、これについてできることはたくさんありません。System.Typeしたがって、ユーザーが実際に入力したバリアントを見つける方法はありません。

于 2012-05-18T19:28:32.603 に答える
0

この質問は以前に尋ねられたものであり、CodeDomapiを介して行うことができます。これこれを参照してください。これらのキーワード(int、boolなど)は言語固有であるため、一般的な.NETコンシューマーに対してこれを出力する場合は、通常、フレームワークタイプ名が優先されます。

于 2012-05-19T05:41:53.150 に答える