我刚刚开始学习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#覆盖的正确方法是什么?
答案 0 :(得分:3)
在F#或C#中,不允许更改覆盖的可访问性。基于@Endjru,最好的方法是使用公共的包装器方法来调用受保护的方法;
type Game as game =
inherit Base()
override game.Method =
//...
()
member game.PublicMethod = game.Method