Как я могу ограничить универсальный параметр, чтобы иметь определенную статическую функцию? - PullRequest
2 голосов
/ 02 июля 2011

Я хочу иметь универсальный параметр, который реализует определенную статическую функцию.Как часть его интерфейса (статическая функция) для меня логично иметь такое ограничение общего параметра, но я не могу найти, как это сделать.Любая помощь приветствуется.

В настоящее время я исправляю такие проблемы, определяя НЕ статические свойства, которые возвращают статические значения, которые, как разработчик ООП, мне определенно не нравятся.Эти свойства являются частью некоторого интерфейса, и универсальный параметр является ограничением для наследования от интерфейса.

Ответы [ 2 ]

4 голосов
/ 02 июля 2011

Вы не можете - нет такой вещи, как ограничение параметра типа статическими членами, если только вы не учитываете ограничение new(), для которого требуется конструктор без параметров.

Обратите внимание, что статические члены не могут быть частью интерфейса в обычном смысле этого слова на C #, хотя они, очевидно, могут быть частью открытого API этого типа.

Ранее я писал в блоге о возможности "статических интерфейсов" в будущей версии C # (просто как запрос функции), но она определенно сейчас недоступна.

Иногда лучшей альтернативой является использование отдельного типа , реализующего обычный интерфейс - если вы можете дать нам больше информации о вашем контексте, мы можем предложить альтернативные подходы.

0 голосов
/ 02 июля 2011

В настоящее время невозможно иметь в C # ограничение, подобное тому, которое вам требуется. Я хотел бы иметь эту функцию, а также. :)

...