我应该使用接口来强制执行泛型吗?

时间:2010-12-13 15:13:09

标签: c# .net generics interface

如果我有以下通用接口:

    public interface IValidator<T>
    {
        Boolean IsValid(T entity_);
    }

我可以通过以下方式使用它吗?这是针对面向对象编程指南吗?

    public PathValidator : IValidator<String>
    {
    }

4 个答案:

答案 0 :(得分:6)

  

使用Interfaces是否违反任何最佳做法?

不,这很好并且很常见(假设你的界面不是空的并且有一个方法签名,如bool IsValid(T entity))。

是什么让你认为它应该是?如果您告诉我们,我们可以详细说明。

答案 1 :(得分:0)

原因不是,只需看看像IList这样的通用集合接口。

答案 2 :(得分:0)

如果这实际上是接口的主体,那么拥有一个没有合同的接口通常不是一个好主意(也就是说,它不需要你实现任何方法)。通常这表明您的设计存在问题。

答案 3 :(得分:0)

空接口(Marker接口)通常是不好的做法,因为你应该使用Attribute。

但如果它只是空的,因为你省略了它来简化例子,那么它对我来说看起来很好。