我刚刚开始学习 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/