Возможный дубликат:
Почему Don & rsquo; t С# Разрешить статические методы для реализации интерфейса?
В моем приложении я хочу использовать репозиторий, который будет выполнять доступ к необработанным данным (TestRepository, SqlRepository, FlatFileRepository и т.д.). Поскольку такой репозиторий будет использоваться во время выполнения моего приложения, мне показалось разумным сделать его статическим классом, чтобы я мог пойти
SqlRepository.GetTheThingById(5);
без необходимости регенерации все время. Поскольку я хочу, чтобы мои репозитории были взаимозаменяемыми, я хочу, чтобы они реализовали общий интерфейс: IRepository. Но когда я пытаюсь сделать это, я получаю
"Static classes cannot implement interfaces"
Почему они не могут? Как вы предлагаете мне изменить свой дизайн? Можно ли использовать шаблон?
UPDATE
Пять лет спустя: этот вопрос посещается 20k + раз, я узнал о недостатках шаблона репозитория, узнал о IoC и понял, что мой вопрос был плохо сформулирован.
Я действительно не спрашивал, что такое спецификация интерфейса С#, а почему именно намеренно ограничивает меня именно этим способом.
Практический ответ заключается в том, что синтаксис вызова метода в экземпляре или в типе отличается. Но вопрос закрыт.