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

本文关键字:父类 访问 嵌套 为什么 | 更新日期: 2023-09-27 18:06:26

我有以下类:

public abstract class Navigator<T> where T : Navigator.Route
{
    public class Route
    {
    }
}
public class P2PNavigator : Navigator<P2PNavigator.Route>
{
    public class Route : Navigator.Route
    {
    }
}

在编译过程中我收到两个错误。

不一致的可访问性:约束类型为"导航器"。Route'不如Navigator'

不一致的可访问性:基类导航器。Route'比类'P2PNavigator '更难访问。路线'

所有东西都具有public可访问性。我还缺什么才能成功?我意识到我最终可以让它们都是命名空间级别的类,但我更喜欢嵌套。


EDIT:多亏了这些答案,我发现问题的根本原因是我的部分类没有正确定义。

public partial abstract class Navigator<T> where T : Navigator.Route
{
}
partial class Navigator // Different to Navigator<T> and implicitly internal.
{
    public class Route
    {
    }
}

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

Navigator.RouteNavigator<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类,使您的示例编译时出现您看到的错误。