此代码有什么问题?
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'
答案 0 :(得分:12)
我将假设类型ScreenManager
为internal
,而包含您的媒体资源的类是公开的。
编译器说可公开访问的字段(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
公开或_ScreenManager
与ScreenManager
具有相同的辅助功能。