Bene, prima cosa:)
Non hai davvero bisogno di fare confusione con i namespace sul tuo caso. I namespace sono più uno strumento organizzativo che altro. La maggior parte delle volte, però, puoi lasciare questo a Visual Studio. L'IDE è davvero intelligente e individuerà il nome dello spazio dei nomi che dovresti usare in base alla struttura della cartella che hai nel tuo progetto.
Quindi, evita di usare tipi annidati. I tipi annidati sono OK per un piccolo insieme di necessità, non sul tuo caso. Non hai davvero bisogno della classe "Base": promuovi i tuoi tipi annidati in classi regolari e sei a posto.
Inoltre, non è necessario che le classi non utensili siano statiche. Sembrano più cose che potrebbero appartenere a una singola istanza di una bacheca rispetto all'intera app. Cosa faresti se volessi avere due partite di scacchi affiancate? Come regola generale, lascia la "globalità" della parola chiave static per le cose che dovrebbero veramente, veramente essere globali. Le tue classi "strumenti" sembrano probabilmente candidate alla parola chiave statica, quindi puoi lasciarla lì.
In alternativa, puoi cercare Iniezione di dipendenza. Anche se sembra un concetto grande e spaventoso, è una cosa talmente semplice che la maggior parte delle persone lo sta già facendo comunque a mano prima che i framework DI diventino una cosa. Non essere ingannato, anche se - Iniezione di dipendenza non è necessario, e talvolta non dovrebbe , essere utilizzato per mezzo di un DI Framework. Puoi farlo molto bene a mano senza problemi e senza la complessità aggiuntiva di un DI Framework.