在f_中,不能仅通过成员的名称隐式调用继承成员(以及在当前类型中定义的成员)-您需要以某种方式引用类型的实例。在您的情况下,您可以使用
base
关键字。以下方法应该有效:
type CreateDatabase() =
inherit BaseDAO()
let createRestaurantTable conn =
base.execNonQuery "..."
[编辑]
只有当
createRestaurantTable
是一个
member
-不是使用
let
(如上例所示)。原因是f编译器不允许caputr
基础
在闭包中,它将上面的示例解释为闭包。您可以将其转换为成员并编写:
type CreateDatabase() =
inherit BaseDAO()
private member x.createRestaurantTable conn =
x.execNonQuery "..."
[/编辑]
或者,也可以使用
as self
(类似于使用
member self.Foo() = ..
在成员声明中。这还允许您从构造函数调用当前类型的成员:
type CreateDatabase() as self =
inherit BaseDAO()
let createRestaurantTable conn =
self.execNonQuery "..."
我更喜欢
基础
关键字(因为引用构造函数中的当前实例会给编译器带来各种麻烦)。