のは、私はこのコードを持っているとしましょう:それは一般的なパラメータとしてインターフェイスをEqualityComparerを呼び出すために意味を成してい
public interface IInterface
{
// Properties...
}
internal class Realisation : IInterface, IEquatable<IInterface>
{
// Properties...
public bool Equals(IInterface other)
{
// ...
}
public override bool Equals(object obj)
{
return Equals(obj as IInterface);
}
public override int GetHashCode()
{
// ...
}
}
目的は平等コードの重複/異なるバージョンを持っていないことですが。
Realisation
にアクセスできません。コードはライブラリに存在するため、アクセスできません。 IInterface
の等価比較関数を呼び出す必要がある場合は、ここにEqualityComparer<IInterface>.Default
と呼ぶのは意味がありますか?実装でEquals(IInterface other)
を使用しますか?あるいは、平等の実装がクラス外にあるべきか?カスタムIEqualityComparer<IInterface>
を提供する必要がありますか?
編集
- 追加
Equals(object obj)
とGetHashCode()
オーバーライド
正確なセットアップとテストでダミーのクラスライブラリを作成し、見つけてください。これはまっすぐでなければなりません。 – CodingYoshi