为什么嵌套的公共类不如父级可访问?
我有以下类别:为什么嵌套的公共类不如父级可访问?
public abstract class Navigator<T> where T : Navigator.Route
{
public class Route
{
}
}
public class P2PNavigator : Navigator<P2PNavigator.Route>
{
public class Route : Navigator.Route
{
}
}
在编译过程中,我收到两个错误。
可访问性不一致:约束类型“Navigator.Route”比导航<Ť>'
可访问性不一致:基类的不易接近Navigator.Route'比少类可访问的‘P2PNavigator.Route’
一切都有public
无障碍。我错过了什么来完成这项工作?我意识到我最终可以让它们成为所有命名空间级别的类,但是我更喜欢嵌套。
编辑:多亏了答案,我发现这个问题的根本原因是我的部分类没有正确定义。
public partial abstract class Navigator<T> where T : Navigator.Route
{
}
partial class Navigator // Different to Navigator<T> and implicitly internal.
{
public class Route
{
}
}
Navigator.Route
是不一样的Navigator<P2PNavigator.Route>.Route
,应该给你其他错误。
代码编译OK:
public abstract class Navigator<T> where T : Navigator<T>.Route
{
public class Route
{
}
}
public class P2PNavigator : Navigator<P2PNavigator.Route>
{
public class Route : Navigator<P2PNavigator.Route>.Route
{
}
}
你可能有一些非通用类Navigator
,使您的样品comile与你看到的错误。
应该是公共抽象类导航
@KeithNicholas,如果想在没有警告的情况下进行编译,可以在第二个Route类中加入'new'。我会保持代码原样,因为它可能应该在实际代码中以不同的方式修复。 – 2013-03-27 23:00:04
我在这里没有看到Navigator.Route的定义。我看到P2PNavigator和Navigator,它不是导航器 –
Moho
2013-03-27 22:47:46
Per @Moho,它是至关重要的,例如,如果该类不像public class {...}那样公开,那么我会得到完全错误(有充分理由) ' – blins 2013-03-27 22:53:08
我会考虑将公共嵌套类移出对象。如果你使用代码分析,你会得到[嵌套类型不应该是可见的](http://msdn.microsoft.com/en-us/library/ms182162.aspx) – 2013-03-27 22:57:32