protected 方法的 F# 公共(public)覆盖

标签 f#

我刚刚开始学习 F#,我正在将它与 Monogame 一起使用来创建一个简单的游戏,以帮助自己学习该语言的各种功能。我在尝试从外部访问我的游戏类时遇到了障碍,因为 Monogame Game 类将方法定义为 protected 。尝试对该方法进行公共(public)覆盖会引发错误,告诉我不允许设置可访问性修饰符。

C#中定义的基类

public class Base
{
    protected virtual void Method()
    {
        //...
    }
}

F# 中的公共(public)覆盖
type Game as game = 
    inherit Base()

    //Error: Accessibility modifiers are not permitted on overrides or interface implementations
    override public game.Method = 
        //...
        ()

问:对继承的 protected C# 方法进行公共(public) F# 覆盖的正确方法是什么?

最佳答案

在 F# 或 C# 中,不允许更改覆盖的可访问性。基于@Endjru,最好的方法是使用公共(public)的包装方法来调用 protected 方法;

type Game as game = 
    inherit Base()

    override game.Method = 
        //...
        ()

    member game.PublicMethod = game.Method

关于 protected 方法的 F# 公共(public)覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24625830/

相关文章:

asynchronous - F# 异步尝试...终于做到了!等待任务

f# - 通过F#中的条件公式创建循环序列

f# - 如何让编译器在此示例中插入正确的类型?

f# - 获取 FAKE 子目录中的文件列表

f# - F# 中的操作代表

F#:将顶级函数转换为成员方法的优点?

c# - F# 和企业软件

f# - F# 中的 t <'a> and ' 和 t 有什么区别?

F# 铁路编程 这个初始化可以改进吗?

f# - 如何从 FAKE 执行 powershell 脚本 - F#MAKE