你如何在f#中声明和使用标记接口?

bh2*_*213 16 f#

你如何在F#中复制这个?

interface IMarker
{
    // No members here
}

class MyClass : IMarker
{
// can contain code
}
Run Code Online (Sandbox Code Playgroud)

更新:以下代码确实定义了标记接口,但到目前为止,没有一个答案设法生成实现此标记接口的producde类(参见上面的MyClass)

type IMarker = interface     end
Run Code Online (Sandbox Code Playgroud)

wme*_*yer 15

一个老问题,但这个特殊情况所需的语法(F#2.0)实际上是:

type IMarker = interface end

type Marker =
  class
    interface IMarker
  end
Run Code Online (Sandbox Code Playgroud)

或者(包括Marker的构造函数):

type IMarker = interface end

type Marker() =
    interface IMarker
Run Code Online (Sandbox Code Playgroud)

只是写作

type Marker =
  interface IMarker
Run Code Online (Sandbox Code Playgroud)

是不可能的,因为它看起来像你想要创建一个新的接口类型.


Cod*_*day 10

type IMarker = interface     end
type MyClass = interface IMarker
Run Code Online (Sandbox Code Playgroud)

(更新)

F#总是隐式定义接口,您需要强制转换为接口才能使用它.

为什么F#接口与C#有很大不同


Pet*_*lon -1

我突然想到(没有启动 Visual Studio):

type IMarker ;

type MyClass =
  interface IMarker
Run Code Online (Sandbox Code Playgroud)