1

いくつかのリポジトリで検索されたアイテムに対して何らかのアクションを実行する方法を説明するインターフェースを取得しました。

そして、そのインターフェイスを作成する方法が 2 つあります。

public interface IService<T> where T : class
{
    void Action<TSource>(int id, TSource source, Action<T> action)
        where TSource : IRead<T>;
}

public interface IService<T> where T : class
{
    void Action(int id, IRead<T> source, Action<T> action);
}

では、どれが最高で、その理由は何ですか?

4

1 に答える 1

2

ここで、私は手足に出て、2番目の方が優れていると言います。

最初の定義では、Action の実装で TSource を直接 (実装にバインドされているインターフェイス IRead を介してではなく) 使用できます。さて、私が想像できる唯一の良い使い方は、関数の署名で TSource を使用することですが、これは行っていません。つまり、次のようなものです:

TSource MyAction<TSource>(int id, TSource source, Action<T, TSource> action)
        where TSource : IRead<T>; // TSource is now also returned from our method

それ以外の場合は、MyAction の本体 (System.Action と競合しないようにサンプル メソッドの名前を自由に変更したことに注意してください) は、IRead インターフェイスのみを認識して使用する方がはるかに優れています。

于 2012-10-26T10:08:34.730 に答える