没有抽象成员的抽象类的对象表达式

Dan*_*iel 6 f#

给定没有成员的接口

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

可以使用对象表达式创建实例

let foo = { new IFoo }
Run Code Online (Sandbox Code Playgroud)

但是,对于没有抽象成员的抽象类,似乎不可能这样做.

[<AbstractClass>]
type Foo() = class end

let foo = { new Foo() }
Run Code Online (Sandbox Code Playgroud)

给出错误:无效的对象表达式.没有覆盖或接口的对象应该使用没有大括号的表达式'new Type(args)'.好吧,我们知道这也行不通.

这是一个hacky解决方法

let foo = { new Foo() with member __.ToString() = base.ToString() }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法为没有抽象成员的抽象类型创建对象表达式?

Bri*_*ian 1

我不认为有更好的方法。

我也不知道你为什么要这样做(没有成员的抽象类),但我只是假设你有你的理由,然后就这样:)