2

私は次のクラスを持っています:

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

public class P2PNavigator : Navigator<P2PNavigator.Route>
{
    public class Route : Navigator.Route
    {
    }
}

コンパイル中に 2 つのエラーが発生します。

一貫性のないアクセシビリティ: 制約タイプ '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 に答える