2012-01-09 3 views
0

私は、次の2つのメソッドのオーバーロードがありFluentValidation framework Cで#を使用していて、右のオーバーロードを選択ませんもう1つでは、TObjectからTPropertyを返すラムダを実行できます。C#が既定値

私はそれが動作する次のようにします。

RuleFor(r => r.First).Equals(r => r.Second); 

それは、この場合には右のオーバーロードを取得しています。私は他の過負荷がデフォルトそれを試してみて、比較演算子の値を渡すとき:

RuleFor(r => r.First).Equals(r => r.Second, new ObjectComparer()); // will not compile 

それは私が最初のオーバーロードを使用しようとしていると考えるので、これはコンパイルされません。

C#で2番目の過負荷を強制的に使用できる方法はありますか?

編集:

ObjectComparerがされたIEqualityComparerです:

public class ObjectComparer : IEqualityComparer<MyClass> 
{ 
    // ... 
} 
+0

おそらく、そのメソッドが期待しているものに2番目のパラメータをキャストしますか? – user1231231412

+1

ComparerはIEqualityComparerですか?あなたのサンプルコードに基づいて、私はそれが確実だと思っていると思います。 –

+0

Comparerのコードを表示します。他の人が指摘したように、 'IEqualityComparer'を実装していない可能性があります。 – gdoron

答えて

2

IEqualityComparer<T>IEqualityComparerを継承していないので、あなたのクラスはIEqualityComparerを実装していません!両方を実装する。

+0

それはそれでした。私はあまりにも多くを仮定したと思います。 – Dismissile

+0

C#仕様では、「継承元」という用語を使用して、インタフェースとその基本インタフェース(存在する場合)との関係を記述します。 "Implements"は、クラスまたは構造体とインタフェースの関係を記述します。 – phoog

+0

@phoogほとんどの人は、彼が何を言っていたのかとは無関係に推測できると思います。 – Dismissile

関連する問題