Possible Duplicate:
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接口。

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

最佳答案

约束不是方法签名的一部分,因此方法具有相同的参数类型。埃里克·利珀特(Eric Lippert)总是向C#讲最好的话:http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-the-signature.aspx

10-08 16:03