“不一致的可访问性:基类比类更难访问”

时间:2014-11-04 22:42:59

标签: c# parent-child parent abstract

做一个老师几乎一步一步给我们写的怎么做的作业,我有一段时间有这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
    }

1 个答案:

答案 0 :(得分:2)

此错误通常与类可访问性相关,如注释中所述。这可能会导致问题,因为您通过public而不是基类型公开派生类型,因此类型转换和继承成员进入灰色区域“我们将这些暴露给其他dll吗?” - 拒绝构建项目的错误消除了一个区域。

看到抽象基类确实是公开的,你确定这适用于你创建的所有类型吗?我注意到在构造函数中使用了MenuName对象。

请注意,如果您有任何公共属性,字段或方法采用或返回未公开的类型,也会显示此错误 - 编译器再次进入“该成员已公开,但包含类型的区域”在它的签名不是。“