Registrazione comandi console di sviluppo

3

Ho una classe DevelopmentConsole. Sto facendo funzionalità per registrare i comandi della console per i sottosistemi. Non voglio che la console sappia di loro ma anche che non voglio che contengano un codice di debug (come "Console.RegisterCommand ...").

Penso che dovrei fare un'ipotesi di classe in più. Per un esempio ho la classe Player.

IConsoleBuilder { 
    RegisterCommand(string command, Func<string[], string> action); 
}

PlayerConsoleBuilderClient : ConsoleBuilderClient { 
    readonly Player _player =  ?inject?

    public override void Visit(IConsoleBuilder builder) { 
        // builder.RegisterCommand("GetName", args => _player.Name) ; 
    }
}

Qui devo usare Reflection per trovare tutte le sottoclassi di ConsoleBuilderClient. Non è una buona idea, vero?

Puoi suggerire come farlo in un modo migliore?

    
posta Vlad 04.01.2014 - 15:07
fonte

1 risposta

1

Ci sono solo 2 opzioni. Definisci esplicitamente ogni classe del cliente in una sorta di collezione. Probabilmente in una sorta di progetto di punta. Oppure usate la reflection per cercare tutte le sottoclassi di ConsoleBuilderClient in tutti gli assembly caricati / disponibili.

Spetta a te scegliere quale preferisci.

    
risposta data 04.01.2014 - 15:32
fonte

Leggi altre domande sui tag