Получить общий тип аргумента и значение, предоставленное универсальному методу
Как вы получаете значение аргумента, предоставленное закрытому / построенному универсальному методу?
Это'с тех пор как яОтражение Отражение Все это было позади меня, ну, что угодно.
class Program
{
static void Main(string[] args)
{
new ConcreteFoo().GenericMethod(5);
Console.ReadKey();
}
}
class ConcreteFoo
{
public void GenericMethod(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()
{
// Same here
}
}
class GenericFoo
{
public void NonGenericMethod(T t) { /* And here*/ }
public void GenericMethod(Q q) { /* And here */ }
}
ОБНОВИТЬ
Этот вопрос абсурден и, следовательно, закрыт спрашивающим. Он хочет сохранить это, просто чтобы показать своим детям, насколько глупыми были папы, если они когда-нибудь оказались программистами на C #.