";可访问性不一致:基类的可访问性不如类";
本文关键字:访问 quot 不一致 基类 | 更新日期: 2023-09-27 18:29:19
在做一项老师几乎一步一步写给我们的作业时,我有这4个错误已经有一段时间了,但我忽略了它们。
基本上,我有一个父类Menus和子类PauseMenu、MainMenu、DifficultyMenu和HelpMenu。我得到的四个错误是,父类比子类更难访问。按照指示,菜单是抽象的,而子菜单是公共的。
#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
}
如注释中所述,此错误通常与类的可访问性有关。这可能会导致一个问题,因为您通过public
而不是基类型公开派生类型,因此类型转换和继承成员会进入"我们将这些成员公开给其他dll吗?"的灰色区域,该区域因拒绝构建项目而被此错误消除。
鉴于抽象基类确实是公共的,您是否确保将其应用于您创建的所有类型?我注意到在构造函数中使用了MenuName
对象。
请注意,如果您有任何采用或返回未公开类型的公共属性、字段或方法,则也会显示此错误-编译器再次进入"成员已公开,但其签名中包含的类型未公开"区域。