Reputation: 12794
I have the following classes:
public abstract class Navigator<T> where T : Navigator.Route
{
public class Route
{
}
}
public class P2PNavigator : Navigator<P2PNavigator.Route>
{
public class Route : Navigator.Route
{
}
}
During compilation I receive two errors.
Inconsistent accessibility: constraint type 'Navigator.Route' is less accessible than Navigator<T>'
Inconsistent accessibility: base class 'Navigator.Route' is less accessible than class 'P2PNavigator.Route'
Everything has public
accessibility. What am I missing to make this work? I realise I could ultimately make them all namespace level classes, but I would prefer to have nesting.
EDIT: Thanks to the answers, I found the root cause of the problem was my partial classes weren't defined properly.
public partial abstract class Navigator<T> where T : Navigator.Route
{
}
partial class Navigator // Different to Navigator<T> and implicitly internal.
{
public class Route
{
}
}
Upvotes: 2
Views: 200
Reputation: 100547
Navigator.Route
is not the same as Navigator<P2PNavigator.Route>.Route
and should be giving you other errors.
Code that specifies types correctly compiles 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
{
}
}
You probably have some non-generic Navigator
class that makes your sample comile with errors you see.
Upvotes: 4