C#方法组类型推断

C#方法组类型推断,c#,generics,type-inference,C#,Generics,Type Inference,我试图编写一个提供参数和调用函数的通用方法,如下所示: class MyClass { public int Method(float arg) => 0; } TResult Call<T1, TResult>(Func<T1, TResult> func) => func(default(T1)); void Main() { var m = new MyClass(); var r1 = Call<float,

我试图编写一个提供参数和调用函数的通用方法,如下所示:

class MyClass {
    public int Method(float arg) => 0;
}

TResult Call<T1, TResult>(Func<T1, TResult> func) =>
    func(default(T1));

void Main()
{
    var m = new MyClass();
    var r1 = Call<float, int>(m.Method);
    var r2 = Call(m.Method); // CS0411
}
class-MyClass{
公共整数方法(浮点参数)=>0;
}
TResult调用(Func Func)=>
func(默认值(T1));
void Main()
{
var m=新的MyClass();
var r1=调用(m.Method);
var r2=调用(m.Method);//CS0411
}
最后一行无法使用编译。这里有什么解决方法可以让类型推断工作吗


用例:使用AutoFixture生成函数调用参数。

不幸的是,这是C#中类型推断的一个限制。它实际上与返回类型没有多大关系,在您的案例中,这是完全推断
调用

的泛型参数所需要的,我认为这是不可能的。Related(?):它不相关,在他的案例中,这两种类型是独立的,都由方法句柄给出。从理论上讲,C#能够完全推断出正确的通用论点。由于复杂性的原因,标准不需要它。如果您只想通过调用调用方法上类型的默认值,那么您可以重载该方法。