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

时间:2011-11-16 16:04:19

标签: f#

给定没有成员的界面

type IFoo = interface end

可以使用对象表达式

创建实例
let foo = { new IFoo }

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

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

let foo = { new Foo() }

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

这是一个hacky解决方法

let foo = { new Foo() with member __.ToString() = base.ToString() }

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

1 个答案:

答案 0 :(得分:1)

我认为没有更好的方法。

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