Как вы объявляете и потребляете интерфейс маркера в f #? - PullRequest
16 голосов
/ 05 января 2009

Как вы копируете это в F #?

interface IMarker
{
    // No members here
}

class MyClass : IMarker
{
// can contain code
}

Обновление: Следующий код определяет интерфейс маркера, но пока ни один из ответов не удается найти в классе producde, который реализует этот интерфейс маркера (см. MyClass выше)

type IMarker = interface     end

Ответы [ 4 ]

15 голосов
/ 24 февраля 2011

Старый вопрос, но необходимый синтаксис (F # 2.0) для этого особого случая на самом деле:

type IMarker = interface end

type Marker =
  class
    interface IMarker
  end

Или альтернативно (включая конструктор для маркера):

type IMarker = interface end

type Marker() =
    interface IMarker

Просто пишу

type Marker =
  interface IMarker

невозможно, потому что похоже, что вы хотите создать новый тип интерфейса.

10 голосов
/ 05 января 2009
type IMarker = interface     end
type MyClass = interface IMarker

(Update)

F # всегда определяет интерфейсы неявно, вам нужно привести к интерфейсу, чтобы использовать его.

Почему интерфейс F # сильно отличается от C #

4 голосов
/ 05 января 2009

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

#light

type IMarker = 
    interface
    end

type Marker =
    interface IMarker
0 голосов
/ 05 января 2009

С макушки головы (без запуска Visual Studio):

type IMarker ;

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