Самый простой способ - использовать существующее семейство делегатов Func
.
Используйте typeof(Func<,,,,>).MakeGenericType(...)
. Например, для вашего int Del2(int, int, string, int)
типа:
using System;
class Test
{
static void Main()
{
Type func = typeof(Func<,,,,>);
Type generic = func.MakeGenericType
(typeof(int), typeof(int), typeof(string),
typeof(int), typeof(int));
Console.WriteLine(generic);
}
}
Если вам действительно, действительно необходимо создать действительно новый тип, возможно, вы могли бы дать больше контекста, чтобы помочь нам помочь вам лучше.
РЕДАКТИРОВАТЬ: Как говорит Олсин, типы Func
являются частью .NET 3.5 - но если вы хотите использовать их в .NET 2.0, вам просто нужно объявить их самостоятельно, например:
public delegate TResult Func<TResult>();
public delegate TResult Func<T, TResult>(T arg);
public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
public delegate TResult Func<T1, T2, T3, TResult>
(T1 arg1, T2 arg2, T3 arg3);
public delegate TResult Func<T1, T2, T3, T4, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
Если вам недостаточно 4 аргумента, вы, конечно, можете добавить больше.