Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么嵌套的公共类比其父类更难访问?_C#_Generics_Abstract Class_Nested Class - Fatal编程技术网

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

C# 为什么嵌套的公共类比其父类更难访问?,c#,generics,abstract-class,nested-class,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 { } } Route与Navigat

我有以下课程:

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不同,它应该会给您带来其他错误

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

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类,这些类会使示例中出现错误。

Navigator.Route与Navigator.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类,这些类会使您的示例出现错误。

我没有看到Navigator.Route的定义。我看到了2pWaveNavigor和Navigor,这不是NavigalPuff@ MoHo,它是至关重要的,例如,我得到准确的错误,如果这个类不是公共的类路由{…},我会考虑将公共嵌套类从对象中移出。如果您使用代码分析,您将在SD中获得@JG,谢谢!我完全支持最佳实践。我没有看到导航器的定义。这里是路线。我看到了2pWaveNavigor和Navigor,这不是NavigalPuff@ MoHo,它是至关重要的,例如,我得到准确的错误,如果这个类不是公共的类路由{…},我会考虑将公共嵌套类从对象中移出。如果您使用代码分析,您将在SD中获得@JG,谢谢!我完全支持最佳实践。应该是公共抽象类导航器,其中T:Navigator.Route{public class Route{}}public class P2PNavigator:Navigator{public new class Route:Navigator.Route{}}@KeithNicholas,如果想要在没有警告的情况下编译,那么在第二个路由类中添加新的路由是很好的。我会保持代码原样,因为它在实际代码中可能应该以不同的方式修复。应该是公共抽象类导航器,其中T:Navigator.Route{public class Route{}}public class P2PNavigator:Navigator{public new class Route:Navigator.Route{}@KeithNicholas,如果想要在没有警告的情况下编译,那么在第二个路由类中添加新的路由是很好的。我会保持代码的原样,因为在实际代码中可能应该以不同的方式修复它。