C# 方法组类型推断

标签 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, int>(m.Method);
    var r2 = Call(m.Method); // CS0411
}

最后一行编译失败 CS0411 .是否有任何解决方法可以让类型推断在这里工作?

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

最佳答案

很遗憾,不能,这是 C# 中类型推断的限制。它对返回类型并没有多大作用,这是您的情况所需要的,可以完全推断出 Call<> 的通用参数。 .

关于C# 方法组类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36019983/

相关文章:

java - 代码模型 : how to check if I need to generate a generic type?

swift - 如何在 Swift 中用它创建类和实例对象的数组?

java - 具有泛型的消费者

c# - Page EventValidation is True 错误?

c# - 如何确定 Web 应用程序当前是否正在运行

c# - 在 C# 中向类添加静态方法,我知道你不需要替代方法

haskell - 如何从类型重建 Haskell 表达式

java - 为什么简单的 “capture of ?” 不能编译甚至可以在编译时推断出类型安全?

android - Kotlin 上限 : What difference does `:Any` make to Kotlin's generic type inference?

c# - 如何在 C# 中专门化派生类的成员类型?