如何分配到基本字段?

时间:2015-07-25 03:41:34

标签: f#

我有一个带有“Root”字段的基类。我正在尝试使用do binding

中的以下代码为其分配值
base.Root <- somevar

我收到以下错误

  

错误FS0419:'base'值只能用于直接调用被覆盖成员的基本实现

我错过了什么?它是基类

中的属性而不是属性

1 个答案:

答案 0 :(得分:1)

显然,F#编译器不允许在派生类构造函数中通过base.引用来改变基类的字段;并且错误消息会提示您有效的base.关键字用法。

尽管如此,你可以尝试一个讨厌的黑客,例如 upcasting 构造的派生实例,如下面的代码片段所示:

type FormulaGrammar() as self =
    inherit Grammar()
    do
        ... stuff from your gist here......
        (self :> Grammar).Root <- expr

虽然在简要介绍一下你的C#原型irony.aspx后,我会说构造函数的类似部分不使用基础Grammar,而是使用派生类型ExpressionGrammar来设置{{1} }}字段,在您的代码上简单地转换为Root