You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

F#类库继承C#基类编译报错,寻求修复方案

F#类编译错误及修复方案

问题背景

将控制台应用中的C#类转换为F#类时,借助Copilot生成的代码无法编译。基于.NET 7.0 SDK(v7.0.201)创建测试解决方案后,C#编译器报出以下错误:

  • Program.cs(7,14): [CS0712] 无法创建静态类“Class2”的实例
  • Program.cs(7,1): [CS0723] 无法声明静态类型“Class2”的变量
  • Program.cs(8,29): [CS1061] “Class2”不包含“Greeting”的定义,也找不到可访问的扩展方法
  • Program.cs(8,49): [CS1061] “Class2”不包含“Number”的定义,也找不到可访问的扩展方法

错误原因

F#代码中使用module Class2包裹了type Class2()类型定义,这会让C#将Class2识别为静态模块而非可实例化的类,因此无法创建实例,也无法访问类的成员方法和属性。

修复方案

移除包裹Class2类型的module Class2代码块,让Class2类型直接处于LibraryF命名空间下即可。

修改后的F#类代码

namespace LibraryF

open LibraryC

type Class2() =     
    inherit Class1()
    
    member this.Junk() = "not static"
      
    override this.Number = 42

    override this.Greeting() =
      let fromBase = base.Greeting()
      $"{fromBase} from Class2 {this.Number}"

修改后重新编译运行,即可正常实例化Class2并调用其Greeting方法和Number属性,与C#端代码兼容。

注:手动编写的解决方案导出脚本已在GitHub提交Issue,提议添加dotnet命令将.sln文件导出为dotnet命令序列的功能。

内容的提问来源于stack exchange,提问作者silvalli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:07:56