Realizar un intérprete de comandos

06/11/2005 - 16:32 por Zephryn Xirdal | Informe spam
Hash: SHA1

A ver si a alguien se le ocurre una forma de hacer esto.

En C++ es relativamente fácil, pero en C# no caigo.

Se trata de una serie de cadenas que el usuario ha de picar y cuando
pulse enter se debe ejecutar la función correspondiente. Las cadenas
están en un combo box, por lo que puedo obtener el índice dentro del
mismo, así me ahorro parsear el asunto, o al menos no parsear el comando
en sí, pero sí los parámetros.

En C lo veo claro: tengo un array de strings que asigno al los items del
combo.
Cuando el usuario pulsa enter capturo la tecla y lanzo el método que se
corresponda al índice del texto del combo, pero dentro de un array de
punteros a funciones, que recogerán la cadena y parsearán el resto.

Pero en C# no caigo cómo hacer algo así sín tener que hacer un case, o
ir con comparaciones de cadenas.

¿Puedo tener un array a referencias de método de una clase y llamar a
uno de ellos mediante el índice al array?:

(pfnc_array[indice])();
 

Leer las respuestas

#1 Octavio Hernandez
06/11/2005 - 20:01 | Informe spam
Hola Zephryn,

Yo primero definiría una estructura con dos campos, una cadena (para el
nombre del comando) y un delegado (la referencia al método asociado). Y
luego un array (constante) de valores de esa estructura, con los comandos
ordenados alfabéticamente para poder hacer una búsqueda dicotómica. Aunque
probablemente aún mejor sería usar un HashTable u otro tipo de colección.
Pero tampoco serán tantos comandos, ¿no?

Un método podría encargarse de buscar el comando por su nombre y ejecutar el
delegado asociado.

Slds - Octavio

"Zephryn Xirdal" escribió en el mensaje
news:
Hash: SHA1

A ver si a alguien se le ocurre una forma de hacer esto.

En C++ es relativamente fácil, pero en C# no caigo.

Se trata de una serie de cadenas que el usuario ha de picar y cuando
pulse enter se debe ejecutar la función correspondiente. Las cadenas
están en un combo box, por lo que puedo obtener el índice dentro del
mismo, así me ahorro parsear el asunto, o al menos no parsear el comando
en sí, pero sí los parámetros.

En C lo veo claro: tengo un array de strings que asigno al los items del
combo.
Cuando el usuario pulsa enter capturo la tecla y lanzo el método que se
corresponda al índice del texto del combo, pero dentro de un array de
punteros a funciones, que recogerán la cadena y parsearán el resto.

Pero en C# no caigo cómo hacer algo así sín tener que hacer un case, o
ir con comparaciones de cadenas.

¿Puedo tener un array a referencias de método de una clase y llamar a
uno de ellos mediante el índice al array?:

(pfnc_array[indice])();

Preguntas similares