【问题标题】:Inconsistent accessibility: property type可访问性不一致:属性类型
【发布时间】:2012-04-25 19:38:37
【问题描述】:

这段代码有什么问题?

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'

【问题讨论】:

  • 值得注意:公共属性的名称以下划线开头可能不是一个好主意。下划线通常保留给私有字段(局部变量)。
  • 你能再贴一些代码吗?从您发布的内容中了解全貌有点困难。

标签: c#


【解决方案1】:

我将假设 ScreenManager 的类型为 internal,而包含您的属性的类是公共的。

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

无论如何,您的字段通常应该是private。而且你可能在你的班级ScreenSystem.ScreenManager 前面缺少public(它默认为internal IIRC)。

【讨论】:

    【解决方案2】:

    这是你的场景:

    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 属性设为内部(并删除内部集访问器)

    以上任何一个都将编译而不会出错。这真的取决于你想要达到的目标。

    【讨论】:

    • @RobertHarvey:你什么意思?你同意我的回答吗?
    • 我的猜测是ScreenSystem.Screen.ScreenManager 指的是命名空间ScreenSystem.Screen 中的类ScreenManagerScreenSystem.ScreenManager 引用了ScreenManager 类中的属性ScreenManager(完全限定为ScreenSystem.Screen.ScreenManager) .只有一个类,因此没有命名空间问题。这只是令人困惑,因为该类与属性具有相同的名称。
    【解决方案3】:

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

    使ScreenManager 公开或使_ScreenManagerScreenManager 具有相同的可访问性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多