Domingo 17 de Noviembre de 2024, 21:26
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
C#
(Moderador:
ProfesorX
) »
Llamar a un objeto usando el nombre
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Llamar a un objeto usando el nombre (Leído 3117 veces)
cls71
Nuevo Miembro
Mensajes: 11
Llamar a un objeto usando el nombre
«
en:
Martes 26 de Octubre de 2010, 08:25 »
0
Hola,
tengo varios objetos nombrados de forma secuencial que pertenecen a una clase clObjeto.
Código: C#
private
clObjeto objeto1, objeto2, objeto3
;
objeto1
=
new
clObjeto
(
)
;
objeto2
=
new
clObjeto
(
)
;
objeto3
=
new
clObjeto
(
)
;
No están metidos en una colección ni array.
Me gustaría usar una variable de referencia para poder apuntar a esos objetos usando su nombre.
Al estilo de algo como:
Código: C#
private
clObjeto variableRef
;
variableRef
=
"nombre del objeto"
+
n
;
// donde n sería el sufijo numérico
es decir, usaría la cadena alfanumérica del nombre del objeto para que la variable variableRef quedara apuntando al objeto.
¿Sabéis si esto es posible en C# ?
Sé que se puede hacer en otros lenguajes como ABAP IV, incluso javascript.
Podría resolverlo usando un array o una lista pero me gustaría hacerlo con variables sueltas si fuera posible.
Muchas gracias.
Tweet
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Llamar a un objeto usando el nombre
«
Respuesta #1 en:
Martes 26 de Octubre de 2010, 12:02 »
0
En teoría si diseñas bien tu aplicación no tienes por qué necesitar hacer eso. Así mismo, si te ves en la necesidad de hacerlo, es que el diseño está mal.
Saludos
Fr33k K0mpu73r
cls71
Nuevo Miembro
Mensajes: 11
Re: Llamar a un objeto usando el nombre
«
Respuesta #2 en:
Martes 26 de Octubre de 2010, 18:05 »
0
Gracias m0skit0, pero la pregunta no era sobre el diseño, sino sobre una funcionalidad concreta que sí tienen otros lenguajes.
sabes si puede hacerse ? y en tal caso cómo se haría ?
S2
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Llamar a un objeto usando el nombre
«
Respuesta #3 en:
Martes 26 de Octubre de 2010, 18:11 »
0
Hasta donde yo sé, sólo se puede hacer con métodos, no con objetos, porque para eso tienes los vectores (arrays), que de hecho es una muchísimo mejor solución (y muchísimo más rápida).
Por cierto, ¿puedes ponerme algún ejemplo de otro lenguaje que permita hacer esto que dices?
Fr33k K0mpu73r
cls71
Nuevo Miembro
Mensajes: 11
Re: Llamar a un objeto usando el nombre
«
Respuesta #4 en:
Martes 26 de Octubre de 2010, 18:31 »
0
Como comenté en el primer post lo podía resolver con arrays, en concreto con listas tipadas. Pero me vino a la cabeza la duda de si podría apuntar al objeto partiendo de su nombre.
En javascript se puede con la función eval (lo digo con la boca pequeña porque hace años que no lo toco).
Y en ABAP IV se haría así (son variables en vez de objetos pero el ejemplo funciona igual):
Código: Text
WRITE:/,/,/.
* ------------------------ DYNAMIC ASSIGN ---------------------------- *
* En este ejemplo la asignación se hace en función del nombre del campo.
* Ejemplo de bucle para mostrar todas las variables con un prefijo común
* El nombre de la variable se actualiza con el paso del bucle.
* -------------------------------------------------------------------- *
DATA: A1(10) , A2(10) , A3(10).
DATA NAME(10) TYPE C.
A1 = 'aaaaaaaaaa'. A2 = 'bbbbbbbbbb'. A3 = 'cccccccccc'.
NAME = 'A'.
FIELD-SYMBOLS: <FS1>.
DATA INDICE(1) TYPE C.
DO 3 TIMES.
INDICE = SY-INDEX.
CONCATENATE 'A' INDICE INTO NAME.
WRITE:/ NAME. "Escribe el nombre de la variable
ASSIGN (NAME) TO <FS1>.
WRITE: <FS1>. "Escribe el contenido de la variable
ENDDO.
WRITE:/,/,/.
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Llamar a un objeto usando el nombre
«
Respuesta #5 en:
Martes 26 de Octubre de 2010, 19:11 »
0
Cierto, en Perl también existe eval, igual que en LISP. Como te digo, que yo sepa en C# sólo puedes hacer eso con métodos.
Saludos
«
última modificación: Jueves 28 de Octubre de 2010, 09:18 por m0skit0
»
Fr33k K0mpu73r
tannke
Miembro MUY activo
Mensajes: 152
Nacionalidad:
Re: Llamar a un objeto usando el nombre
«
Respuesta #6 en:
Miércoles 27 de Octubre de 2010, 18:17 »
0
Bueno, te comento, lo vi en un ejemplo hace mucho tiempo, nunca lo prové y no se si funcionará con cualquier objeto. En ese ejemplo funcionaba, bueno, el tipo usaba esto:
this.b3.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("b1"+p+".BackgroundImage")));
donde b3 y b1 són botones (hay mas en el ejemplo) y "p" es un número al azar. El tio lo que hacía era cambiar las imagenes de los botones al azar.
y el resources es:
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
Si funciona con cualquier tipo de objeto avisa. De todos modos como te comentó cls71 no le veo una proctica muy buena. Saludos
cls71
Nuevo Miembro
Mensajes: 11
Re: Llamar a un objeto usando el nombre
«
Respuesta #7 en:
Miércoles 27 de Octubre de 2010, 23:15 »
0
gracias tannke, pero sólo sirve para referenciar recursos de la aplicación (imágenes, icones, ficheros, ...).
S2
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
C#
(Moderador:
ProfesorX
) »
Llamar a un objeto usando el nombre