【问题标题】:Generic parameter inference and ambiguous function call - is there a workaround? [duplicate]通用参数推断和模棱两可的函数调用 - 有解决方法吗? [复制]
【发布时间】:2012-10-18 15:46:51
【问题描述】:

可能重复:
Ambiguous call between two C# extension generic methods one where T:class and other where T:struct

我有这两个功能:

public static Degrees Convert<TInput>(this TInput input)
  where TInput : NumericValue, IDegreesBased, new()
{
  //Some stuff
}

public static SquarredMeters Convert<TInput>(this TInput input)
  where TInput : NumericValue, ISquarredMetersBased, new()
{
  // Some stuff
}

当我调用new SquarredKilometers(10).Convert() 时,出现一个错误,说上面两个函数之间的调用不明确。 SquarredKilometers 类实现 ISquarredMetersBased 接口。

EDIT :所以看起来很正常。这个精确问题的任何解决方法? (接口实现)

【问题讨论】:

标签: c# generics type-inference ambiguous-call


【解决方案1】:

约束不是方法签名的一部分,因此这些方法具有相同的参数类型。 Eric Lippert 总是把 C# 解释得最好:http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-the-signature.aspx

【讨论】:

    【解决方案2】:

    您的函数签名相同 - 这不起作用。
    尝试显式实现您的接口。

    【讨论】:

    • 你能详细说明你的解决方案吗? :)
    【解决方案3】:

    你不能有这两种方法,因为它们接受相同数量的参数。 要编译您的代码,您必须更改其中一种方法的签名,或者您可以按照 Grumbler85 的建议实现接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2015-03-16
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      相关资源
      最近更新 更多