この質問は、ジェネリックで MethodBase を区別する方法の続きです
簡単に言うと、異なるジェネリック型の置換のために呼び出されたときに、辞書で同じジェネリック メソッドを区別する必要があります。
static Dictionary<MethodBase, string> cache = new Dictionary<MethodBase, string>();
static void Method1<T>(T g)
{
MethodBase m1 = MethodBase.GetCurrentMethod();
cache[m1] = "m1:" + typeof(T);
}
そのため、IEqualityComparer をオーバーライドして、MethodBase 引数を引数ごとに比較しました。また、デバッグ中に、ジェネリック メソッドの実際の型の引数を検出する方法がないことに疑問を感じました。GetGenericArguments も GetParameters も、実際の型の呼び出しを提供しません。私は正しいですか?もしそうなら、最初の行 Environment.StackTrace で比較する以外の方法はわかりません - このメソッドだけが引数の型を調べるからです。