为什么嵌套的公共类比它的父级更难访问?

时间:2013-03-27 22:35:52

标签: c# generics abstract-class nested-class

我有以下课程:

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&lt; T&gt;'

     

可访问性不一致:基类“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
    {
    }
}

1 个答案:

答案 0 :(得分:4)

Navigator.RouteNavigator<P2PNavigator.Route>.Route不同,应该会给您带来其他错误。

指定类型的代码正确编译好:

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类,它使你的示例变得容易出错。