你如何在F#中复制它?
interface IMarker
{
// No members here
}
class MyClass : IMarker
{
// can contain code
}
更新: 以下代码确实定义了标记接口,但到目前为止,没有一个答案设法生成实现此标记接口的producde类(参见上面的MyClass)
type IMarker = interface end
答案 0 :(得分:15)
一个老问题,但这个特殊情况所需的语法(F#2.0)实际上是:
type IMarker = interface end
type Marker =
class
interface IMarker
end
或者(包括Marker的构造函数):
type IMarker = interface end
type Marker() =
interface IMarker
刚写
type Marker =
interface IMarker
是不可能的,因为它看起来像你想要创建一个新的接口类型。
答案 1 :(得分:10)
type IMarker = interface end
type MyClass = interface IMarker
(更新)
F#总是隐式定义接口,你需要强制转换为接口才能使用它。
答案 2 :(得分:4)
为了得到一个空类型,我相信你将不得不恢复到非光的语法(接口......结束)。
#light
type IMarker =
interface
end
type Marker =
interface IMarker
答案 3 :(得分:-1)
离开我的头顶(不启动Visual Studio):
type IMarker ;
type MyClass =
interface IMarker