我正在尝试编写一个提供参数并调用函数的通用方法,如下所示:
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
}
最后一行编译失败 CS0411 .是否有任何解决方法可以让类型推断在这里工作?
用例:使用AutoFixture生成函数调用参数。
最佳答案
很遗憾,不能,这是 C# 中类型推断的限制。它对返回类型并没有多大作用,这是您的情况所需要的,可以完全推断出 Call<>
的通用参数。 .
关于C# 方法组类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36019983/