Я могу сделать тип делегата во время выполнения из списка параметра System.Type, благодаря ответу на вопрос здесь.
Но как мне это сделать, если один из параметров является универсальным параметром, скажем, он представляет собой что-то вроде следующего?
delegate t ScanFun<t>();
Мне нужен System.Type, который представляет универсальный делегат, чтобы я мог вызвать метод Type.MakeGenericType с типом для универсального параметра t. Тем не менее, я даже не могу найти способ узнать, как это выглядит.
Использование в инструменте анализа кода. У меня есть код, который работает с известными типами:
System.Type[] parms = new Type[f.sig.Parms.list.Length + 1];
specs[0] = f.sig.ReturnType.Type;
for (int i = 0; i < f.sig.Parms.list.Length; i++)
specs[i + 1] = f.sig.Parms.list[i].Type;
for (int i = 0; i < parmTypes_.Length; i++)
{
if (f.sig.Generic.List.Contains(specs[i].Name))
{
/// TODO: Make generic parameter Type here
goto done;
}
parms[i] = f.Parent.findType(specs[i]);
done: ;
}
var dtype = System.Linq.Expressions.Expression.GetDelegateType(parms);