Secondo me, se ho compreso a fondo il tuo obiettivo, la strada che hai intrapreso è troppo complessa e - soprattutto - si presta a molti buchi di sicurezza terribili: potrebbero essere utilizzati comandi tali da danneggiare il sistema.

Se vuoi implementare una comunicazione tra client e server, non è meglio che tu stabilisca una specie di protocollo proprietario?

In definitiva, contempli un numero limitato e preciso di comandi eseguibili ai quali si possono associare dei parametri con altrettanti valori; in seguito, implementi tramite codice un parser, cioè una classe in grado di interpretare i comandi in arrivo ed eseguire, in modo incorporato o attraverso la generazione di eventi, codice in modo opportuno che sia in grado di assolvere il compito assegnato (leggi "rispondere al comando").

Ad esempio, il tipo di dati System.String ti fornisce tantissimi metodi per estrarre sottostringhe, verificare la presenza e la posizione di un testo, convertire in valori numerici e così via.

La realizzazione di un parser può essere un po' boriosa e lunga ma abbastanza intuitiva; a fronte dei comandi che riesci ad interpretare (in base alle funzionalità che prevedi di inserire) esegui il codice corrispondente.

L'esecuzione di codice al volo sarebbe molto rischiosa, secondo me, oltre che più complessa da implementare.

Ciao!