Мне нужен метод, чтобы найти исходный тип аргумента, вызываемого для универсального метода, такого как:
public GetGenericArgumentName<T>() where T : IFoo
{
StackFrame fr = new StackFrame(0, true);
StackTrace st = new StackTrace(fr);
var ga = fr.GetMethod().GetGenericArguments();
foreach (var item in ga)
{
Console.WriteLine(item.Name);
}
}
Но я не смог получить исходный тип у вызывающей стороны.
Допустим, я должен получить классы из IFoo
public class Foo : IFoo {}
public class Foo2 : IFoo {}
Если я вызову их следующими методами, я ожидаю этих результатов:
/* 1 */ GetGenericArgumentName<Foo>()
/* 2 */ GetGenericArgumentName<Foo2>()
Для первого я ожидал Fooкак результат, и для второго Foo2.Чего мне не хватает?