2

我有以下课程:

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<T> 更难访问

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

1 回答 1

4

Navigator.Route不一样Navigator<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类使您的示例与您看到的错误相一致。

于 2013-03-27T22:41:03.117 回答