我可以这样做:
Action<T> mapComponentFields<T> = (T arg) =>
{
// TODO
};
int arg = 10;
mapComponentFields<int>(arg)
答案 0 :(得分:7)
不是那样 - 但你可以编写一个返回委托的通用方法:
static Action<T> MapField<T>()
{
// This will use Console.WriteLine(object) of course...
return arg => Console.WriteLine(arg);
}
...
MapField<int>()(10);
作为另一个例子,您可以创建一个返回标识函数的方法:
static Func<T, T> Identity<T>()
{
return value => value;
}
但是无论何时调用它,在执行时都必须有一个具体类型 。因此,您可以从已定义类型参数的泛型类型中调用它:
public class Sample<TFoo>
{
static void Test()
{
Func<TFoo, TFoo> identity = Helpers.Identity<TFoo>();
}
}
...但您不能在方法中声明类型参数,就像您在问题中尝试做的那样。