C# 有没有办法创建泛型动作或函数

C# 有没有办法创建泛型动作或函数,c#,generics,C#,Generics,我可以这样做吗: Action<T> mapComponentFields<T> = (T arg) => { // TODO }; int arg = 10; mapComponentFields<int>(arg) Action mapComponentFields=(T参数)=> { //待办事项 }; int arg=10; mapComponentFields(arg) 不是这样的-但是您可以编写一个返回委托

我可以这样做吗:

Action<T> mapComponentFields<T> = (T arg) =>
    {
        // TODO
    };

int arg = 10;
mapComponentFields<int>(arg)
Action mapComponentFields=(T参数)=>
{
//待办事项
};
int arg=10;
mapComponentFields(arg)
不是这样的-但是您可以编写一个返回委托的通用方法:

static Action<T> MapField<T>()
{
    // This will use Console.WriteLine(object) of course...
    return arg => Console.WriteLine(arg);
}

...

MapField<int>()(10);
静态动作映射字段()
{
//这将使用Console.WriteLine(对象)当然。。。
return arg=>Console.WriteLine(arg);
}
...
MapField()(10);
作为另一个示例,您可以创建一个方法来返回标识函数:

static Func<T, T> Identity<T>()
{
    return value => value;
}
static Func Identity()
{
返回值=>value;
}
但无论何时调用它,在执行时都必须有一个具体的类型。因此,您可以从已定义类型参数的泛型类型调用它:

public class Sample<TFoo>
{
    static void Test()
    {
        Func<TFoo, TFoo> identity = Helpers.Identity<TFoo>();
    }
}
公共类示例
{
静态孔隙试验()
{
Func identity=Helpers.identity();
}
}
。。。但您不能像您在问题中试图做的那样,仅在方法中声明类型参数