Должен ли я использовать интерфейсы для обеспечения применения дженериков? - PullRequest
1 голос
/ 13 декабря 2010

Если у меня следующий общий интерфейс:

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

Могу ли я использовать его следующим образом? Это противоречит принципам объектно-ориентированного программирования?

    public PathValidator : IValidator<String>
    {
    }

Ответы [ 4 ]

6 голосов
/ 13 декабря 2010

Это использование интерфейсов против какой-либо передовой практики?

Нет, это нормально и распространено (при условии, что ваш интерфейс не пустой и имеет сигнатуру метода, такую ​​как bool IsValid(T entity)).

Что заставляет вас думать, что это должно быть? Если вы сообщите нам, мы можем уточнить.

0 голосов
/ 13 декабря 2010

Пустой интерфейс (интерфейс маркера) обычно является плохой практикой, потому что вместо него следует использовать атрибут.

Но если он пуст только потому, что вы упустили его, чтобы упростить пример, тогда он выглядит совершенно нормально для меня.

0 голосов
/ 13 декабря 2010

Если это на самом деле тело интерфейса, то, как правило, не очень хорошо иметь интерфейс без контракта (то есть он не требует от вас реализации каких-либо методов).Обычно это наводит на мысль о проблеме с вашим дизайном.

0 голосов
/ 13 декабря 2010

Конечно, просто взгляните на универсальные интерфейсы сбора, такие как IList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...