F#公共覆盖受保护的方法

我刚刚开始学习F#,我正在使用Monogame来创建一个简单的游戏,以帮助自己学习该语言的各种功能.我试图从外面访问我的游戏类,因为Monogame Game类将方法定义为受保护.尝试对方法进行公共覆盖会引发错误,告诉我不允许设置辅助功能修饰符.

基类在C#中定义

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

F#中的公共覆盖

type Game as game = 
    inherit Base()

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

问:对继承的受保护C#方法执行公共F#覆盖的正确方法是什么?

最佳答案
在F#或C#中,不允许更改覆盖的可访问性.基于@Endjru,最好的方法是使用公共的包装器方法来调用受保护的方法;

type Game as game = 
    inherit Base()

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

    member game.PublicMethod = game.Method

转载注明原文:F#公共覆盖受保护的方法 - 代码日志