tengo este código:¿Cuál es el patrón de C# para realizar una acción en una serie de valores?
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Orange) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Orange, 0, 0);
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Blue) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Blue, 0, 0);
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Shift) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Shift, 0, 0);
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Control) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Control, 0, 0);
...
y quiero refactorizar el código separar la definición de clave/función de las acciones . Key.xxx y Function.xxx no son del mismo tipo.
por ejemplo: en Python, yo podría simplemente hacer algo como:
keys = (
(Key.Orange, Function.Orange),
(Key.Blue , Function.Blue),
(Key.Shift , Function.Shift),
...
)
psi_key = PsionTeklogix.Keyboard.Keyboard
for key, func in keys:
if psi_key.GetModifierKeyState(key) == KeyState.Lock):
psi_key.InjectKeyboardCommand(func, 0, 0)
¿Cuál es "la manera correcta" de hacerlo en C#?
@Jimmy: Me gusta cómo asumes que está asumiendo. Tal vez es nuevo? En cualquier caso, 'for' in C# no hará lo que está pidiendo.Él necesita usar 'foreach'. –
Ojalá pudiéramos rechazar los comentarios porque @Jimmy Hoffa no es necesario por aquí. – JonH
@Jimmy: soy consciente de foreach, pero estaba buscando una forma no verbosa para construir la matriz inicial. Y sí, soy un novato en C# (lo siento) – PabloG