3

重複の可能性:
2 つの C# 拡張ジェネリック メソッド間のあいまいな呼び出し (1 つは T:class、もう 1 つは T:struct)

私はこの2つの機能を持っています:

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()、上記の 2 つの関数の間で呼び出しが曖昧であるというエラーが表示されます。このSquarredKilometersクラスは、ISquarredMetersBased インターフェイスを実装します。

編集:それは正常なようです。この正確な問題の回避策はありますか? (インターフェースの実装)

4

3 に答える 3

3

制約はメソッド シグネチャの一部ではないため、メソッドのパラメーターの型は同じです。Eric Lippertは常に C# について説明しています。

于 2012-10-18T15:55:01.913 に答える
0

関数のシグネチャは同じです - これは機能しません。
インターフェイスを明示的に実装してみてください。

于 2012-10-18T15:49:15.993 に答える
0

これら 2 つのメソッドは、同じ数のパラメーターを受け入れるため、使用できません。コードをコンパイルするには、いずれかのメソッドの署名を変更するか、Grumbler85 の提案に従ってインターフェイスを実装する必要があります。

于 2012-10-18T15:59:22.393 に答える