【问题标题】:C# method group type inferenceC# 方法组类型推断
【发布时间】:2016-03-15 19:06:05
【问题描述】:

我正在尝试编写一个提供参数并调用函数的通用方法,如下所示:

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# generics type-inference


【解决方案1】:

很遗憾,没有,这是 C# 中类型推断的限制。它对返回类型并没有太大作用,这是您的情况所需要的,以完全推断Call&lt;&gt; 的通用参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多