1

我有一个界面,它描述了一种对在某个存储库中查找的某些项目执行某些操作的方法。

我看到了两种创建该界面的方法。

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

我会在这里,说第二个更好。

第一个定义将允许您在 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 回答