1

这段代码有什么问题?

public ScreenManager _ScreenManager
        {
            get { return screenManager; }
            internal set { screenManager = value; }
        }
        ScreenManager screenManager;

我得到这个错误:

Inconsistent accessibility: field type 'ScreenSystem.ScreenManager' is less accessible than field 'ScreenSystem.Screen.ScreenManager'
4

3 回答 3

12

我将假设类型ScreenManagerinternal包含您的属性的类是公共的。

编译器说可公开访问的字段 ( )属于不可公开访问ScreenSystem.Screen.ScreenManager的类型 ( )。ScreenSystem.ScreenManager

private无论如何,您的领域通常应该是。而且你可能public在你的班级前面错过了一个ScreenSystem.ScreenManager(它默认为internalIIRC)。

于 2012-04-25T19:41:53.343 回答
4

这是你的场景:

namespace ScreenSystem
{
    internal class ScreenManager
    {
        public string Test { get; set; }
    }
}

namespace ScreenSystem
{
    public class Screen
    {
        public ScreenManager Manager
        {
            get; internal set;
        }
    }
}

编译器输出
不一致的可访问性:属性类型“ScreenSystem.ScreenManager”的可访问性低于属性“ScreenSystem.Screen.Manager”

以下是解决方案,具体取决于您要执行的操作:

  • 使Screen类内部
  • 公开ScreenManager课程
  • 使ScreenManager类公开和Screen类内部
  • Screen.Manager 属性设为内部(并删除内部集访问器)

以上任何一项都将编译而不会出现错误。这实际上取决于您要实现的目标。

于 2012-04-25T19:43:43.880 回答
2

这意味着您已ScreenManager设置为私有或受保护,但您正试图将依赖于ScreenManager. 你不能那样做。

ScreenManager公开或提供_ScreenManager与.ScreenManager

于 2012-04-25T19:42:59.677 回答