可访问性不一致:属性类型

时间:2012-04-25 19:38:38

标签: c#

此代码有什么问题?

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'

3 个答案:

答案 0 :(得分:12)

我将假设类型ScreenManagerinternal,而包含您的媒体资源的类是公开的。

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

无论如何,您的字段通常应为private。您可能会在课程public前面错过ScreenSystem.ScreenManager(默认为internal IIRC)。

答案 1 :(得分: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 属性设为内部(并删除内部设置访问者)

上述任何一个都会编译没有错误。这实际上取决于你想要实现的目标。

答案 2 :(得分:2)

这意味着您已将ScreenManager设置为私有或受保护但您正在尝试公开依赖ScreenManager的属性。你不能这样做。

ScreenManager公开或_ScreenManagerScreenManager具有相同的辅助功能。