クローズド/構築されたジェネリック メソッドに渡された引数値を取得するにはどうすればよいですか?
Reflection に触れてからしばらく経ちました。これはすべて、うーん、何でも、私の後ろにありました。
class Program
{
static void Main(string[] args)
{
new ConcreteFoo().GenericMethod<int>(5);
Console.ReadKey();
}
}
class ConcreteFoo
{
public void GenericMethod<Q>(Q q)
{
var method = MethodInfo.GetCurrentMethod();
var parameters = method.GetParameters();
if (parameters.Length > 0)
foreach (var p in parameters)
Console.WriteLine("Type: {0}", p.ParameterType);
// That still prints Q as the type.
// I've tried GetGenericArguments as well. No luck.
// I want to know:
// 1) The closed type, i.e. the actual generic argument supplied by the caller; and
// 2) The value of that argument
}
public void GenericMethodWithNoGenericParameters<Q>()
{
// Same here
}
}
class GenericFoo<T>
{
public void NonGenericMethod(T t) { /* And here*/ }
public void GenericMethod<Q>(Q q) { /* And here */ }
}
アップデート
この質問はばかげているため、質問者によって閉じられます。彼は、子供たちが C# プログラマーであることが判明した場合に、父親がどれほど愚かであったかを子供たちに示すためだけに、それを保持したいと考えています。