3

可能重复:
两个 C# 扩展泛型方法之间的不明确调用,一个是 T:class,另一个是 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 接口。

编辑:所以这似乎是正常的。这个精确问题的任何解决方法?(接口实现)

4

3 回答 3

3

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

于 2012-10-18T15:55:01.913 回答
0

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

于 2012-10-18T15:59:22.393 回答
0

您的函数签名是相同的 - 这是行不通的。
尝试显式地实现您的接口。

于 2012-10-18T15:49:15.993 回答