Regarding only how to structure such a beast ...
You can use partial classes to split the main class and the nested classes. When you do so, you're advised to name files appropriately so it's obvious what is going on.
// main class in file Outer.cs
namespace Demo
{
public partial class Outer
{
// Outer class
}
}
// nested class in file Outer.Nested1.cs
namespace Demo
{
public partial class Outer
{
private class Nested1
{
// Nested1 details
}
}
}
In much the same way, you often see (explicit) interfaces in their own file. e.g. Outer.ISomeInterface.cs
rather than the editor default of #region
ing them.
Your projects file structure then starts to look like
/Project/Demo/ISomeInterface.cs
/Project/Demo/Outer.cs
/Project/Demo/Outer.Nested1.cs
/Project/Demo/Outer.ISomeInterface.cs
Typically when we're doing this it's for a variation of the Builder pattern.