質問

メソッドMyMethod:に関連するメソッドInfoがあるとします。

void myMethod(int param1, int param2) { }
.

、メソッドの署名を表す文字列を作成します。

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

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

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

これを改善することができ、上記の結果を生み出すことができますか?

役に立ちましたか?

解決

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

他のヒント

私が知っている限りでは、プリミティブ(System.Int32)の real タイプ名を組み込みエイリアス(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