做一个老师几乎一步一步给我们写的怎么做的作业,我有一段时间有这4个错误,但却忽略了它们。
基本上我有一个带有子类PauseMenu,MainMenu,DifficultyMenu和HelpMenu的父类Menus。我得到的四个错误说,父类比子类更难访问。根据指示,菜单是抽象的,而子菜单是公开的。
#region Constructors
protected Menu(MenuName menuName, Texture2D background, Rectangle drawRectangle)
{
this.menuName = menuName;
this.background = background;
this.drawRectangle = drawRectangle;
}
public Menu()
{
}
#endregion
我们的教授特意说要添加一个没有参数的公共构造函数,因为这个原因,但我的IDE仍然告诉我它错了。
有关如何解决此问题的任何想法?
这是主菜单的构造函数
public MainMenu(Rectangle drawRectangle)
: base(MenuName.MainMenu, SpriteDictionary.GetSprite("mainMenuBackground"), drawRectangle)
{}
这是类
的声明namespace WackyPong.Menus
{
public abstract class Menu
{
//all my code
}
答案 0 :(得分:2)
此错误通常与类可访问性相关,如注释中所述。这可能会导致问题,因为您通过public
而不是基类型公开派生类型,因此类型转换和继承成员进入灰色区域“我们将这些暴露给其他dll吗?” - 拒绝构建项目的错误消除了一个区域。
看到抽象基类确实是公开的,你确定这适用于你创建的所有类型吗?我注意到在构造函数中使用了MenuName
对象。
请注意,如果您有任何公共属性,字段或方法采用或返回未公开的类型,也会显示此错误 - 编译器再次进入“该成员已公开,但包含类型的区域”在它的签名不是。“