1

私は依存性注入を使用しており、次のインターフェイスを使用しています。

public interface IAchievement : IEquatable<IAchievement>
{
    string GetName();

    string GetDescription();
}

私はIEquatableを持っています。Equalsメソッドを定義できます(list.contains()が正しく機能するため)。問題は、Equalsメソッドは、このインターフェイスを実装するすべてのクラスでまったく同じであるということです。拡張メソッドを使用してインターフェイス用に定義する方法はありますか?実装クラスとインターフェースの間の階層に「抽象」クラスを貼り付けることはできますが、依存性注入の目的が損なわれるのではないかと心配しています。

4

1 に答える 1

1

拡張メソッドを使用して、すべてのクラスに共通の実装を提供することもできますが、それでも、それぞれがEquals()を実装してから、拡張メソッドを呼び出す必要があります。インターフェイスを満たすために拡張メソッドを使用することはできません。

抽象クラスを使用しても、DIと矛盾しません。あなたはまだインターフェースを回します。すべての具象クラスが共通のベースを持っているだけです。

于 2012-10-07T00:59:09.400 に答える