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