Inheritance 为什么在子类中使用F#member时找不到

Inheritance 为什么在子类中使用F#member时找不到,inheritance,f#,f#-interactive,Inheritance,F#,F# Interactive,对于我的所有DAO对象,我都有一个要从中继承的基类型,但该成员在未定义时会进一步出错: type BaseDAO() = member v.ExecNonQuery2(conn)(sqlStr) = let comm = new MySqlCommand(sqlStr, conn, CommandTimeout = 10) comm.ExecuteNonQuery |> ignore comm.Dispose |> ignore

对于我的所有DAO对象,我都有一个要从中继承的基类型,但该成员在未定义时会进一步出错:

type BaseDAO() =
    member v.ExecNonQuery2(conn)(sqlStr) =
        let comm = new MySqlCommand(sqlStr, conn, CommandTimeout = 10)
        comm.ExecuteNonQuery |> ignore
        comm.Dispose |> ignore
我以这种类型继承:

type CreateDatabase() =
    inherit BaseDAO() 

    member private self.createDatabase(conn) =
        self.ExecNonQuery2 conn "DROP DATABASE IF EXISTS restaurant"
这是我在交互式shell中运行脚本时看到的:

--> Referenced 'C:\Program Files\MySQL\MySQL Connector Net 6.2.3\Assemblies\MySql.Data.dll'

[Loading C:\Users\jblack\Documents\Visual Studio 2010\Projects\RestaurantService\RestaurantDAO\BaseDAO.fs]

namespace FSI_0106.RestaurantServiceDAO
  type BaseDAO =
    class
      new : unit -> BaseDAO
      member
        ExecNonQuery2 : conn:MySql.Data.MySqlClient.MySqlConnection ->
                          sqlStr:string -> unit
      member execNonQuery : sqlStr:string -> unit
      member
        execQuery : sqlStr:string *
                    selectFunc:(MySql.Data.MySqlClient.MySqlDataReader ->
                                  'a list) -> 'a list
      member f : x:obj -> string
      member Conn : MySql.Data.MySqlClient.MySqlConnection
    end

[Loading C:\Users\jblack\Documents\Visual Studio 2010\Projects\RestaurantService\RestaurantDAO\CreateDatabase.fs]


C:\Users\jblack\Documents\Visual Studio 2010\Projects\RestaurantService\RestaurantDAO\CreateDatabase.fs(56,14): error FS0039: The field, constructor or member 'ExecNonQuery2' is not defined
我很好奇我做错了什么

我尝试过不继承,只是在函数中实例化
BaseDAO
类型,但我得到了相同的错误


我开始使用此路径是因为我有一个属性具有相同的错误,因此我在定义
BaseDAO
类型时似乎有问题,但它编译时没有错误,这进一步让我对这个问题感到困惑。

看起来您可能正在加载单个文件,也许你的历史记录中有一些东西,你继承的类在另一个名称空间/模块中,你继承的是没有该成员的旧版本


重置您的fsi会话并重新开始,或者将其放入.fs文件以诊断是否有任何问题,但我认为代码没有问题,问题在于您与fsi的交互方式。

我没有考虑重置fsi会话。这似乎奏效了。非常感谢。