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

时间:2014-07-08 07:16:36

标签: 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#覆盖的正确方法是什么?


1 个答案:

答案 0 :(得分:3)

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

type Game as game = 
    inherit Base()

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

    member game.PublicMethod = game.Method