llenar un objeto con reflection

18/10/2004 - 22:51 por Abel | Informe spam
Necesitaría llenar un objeto que lo comienzo a inicializar con otro, y luego
iré agregandole más datos.
Como una parte es común a todos los objetos, quería saber cómo puedo usar,
bajo reflection, el poder llamar a un objeto por su tipo, si lo pasé comoo
object.
Simple, en la clase factory crearé el objeto ClienteCapital,
ClienteInterior, ClienteExterior, Franquiciado, etc, pero yo, para llenar
esos objetos, que tienen una parte grande en común, me gustaría hacerlo por
reflection.
Lo que haría sería parsar el objeto cliente... como object, le pasaría el
nombre de la clase como string, y los datos en común, en otro objeto.
Tendría que llenar el objeto con los datos del último objeto.
Ahora si yo lo paso como object, con type.GetType puedo sacar el tipo.
La duda es cómo invocar el objeto del tipo object desde el type
Cualquier ayuda será agradecida

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
19/10/2004 - 01:20 | Informe spam
Creo que reflection no es la solucion. Si estas clases tienen una parte en
comun lo mejor seria sacar esa parte comun a otra clase y usarla como base
para los otras clases (mediante herencia). Otra opcion podria ser crear una
interface con la parte comun y hacer que las clases implementen esa
interface de forma que puedas usar la interface para acceder a la parte
comun de las clases. Esto serviria para usar la parte comun de las clases,
para usar el resto puedes chequear el tipo y hacer un cast a ese tipo.
Reflection es lento y si al momento de codificar sabes que hacer segun el
tipo de objeto mucho mejor es usar variables de ese tipo haciendo un cast
desde Object al tipo especifico.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Abel
19/10/2004 - 15:19 | Informe spam
Eduardo, vos o yo no tenemos la misma visión de objetos y la misma visión de
.NET.
La idea de Reflection es justamente esa, la de poder invocar los objetos de
la manera que yo digo, sino sobrarían las instrucciones.
Y puedo hacer eso, porque en todos los casos heredo de un algo en comun, un
objeto base.
Ya voy a llegar a mi código, en pocas horas, porque sigo leyendo e
instruyendome en reflection.
Pero deberías leer un poco más de objetos y un poco menos de Microsoft.
Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
19/10/2004 - 17:37 | Informe spam
Eduardo, vos o yo no tenemos la misma visión de objetos y la misma
visión de .NET.



Asi parece.

La idea de Reflection es justamente esa, la de poder invocar los
objetos de la manera que yo digo, sino sobrarían las instrucciones.
Y puedo hacer eso, porque en todos los casos heredo de un algo en
comun, un objeto base.



Si, esa es la idea de Reflection, pero pocas veces realmente necesitas su
uso. Es util cuando al momento de programar no tienes idea de que cosa se
debe ejecutar pero me parece que ese no es tu caso. Reflection y
late-binding no permiten un chequeo al momento de programar y pueden generar
excepciones no esperadas al momento de la ejecucion. Early-binding, es
decir, usar el tipos especificos en las variables, ayuda a prevenir esos
error pero a la hora de compilar, ademas de ser mas rapido por no tener que
estar buscando y comparando nombres, chequeando tipos, etc. al momento de
llamar a un metodo o propiedad.

Ya voy a llegar a mi código, en pocas horas, porque sigo leyendo e
instruyendome en reflection.



Como veo que de todas formas quieres usar reflection, aqui tienes un
ejemplo:

' Obtienes el Type de la clase
Dim t As Type = GetType(Form1) ' Puede ser tambien obj.GetType()

' Obtienes el PropertyInfor de la propiedad que quieres obtener
Dim p As Reflection.PropertyInfo = t.GetProperty("Text")

' Obtienes el valor de la propiedad
valor = p.GetValue(Me, Nothing)

' Cambias el valor de la propiedad
p.SetValue(Me, "Nuevo", Nothing)

' Obtienes el MethodInfo del metodo que quieres llamar
Dim m As Reflection.MethodInfo = t.GetMethod("Refresh")

' Llamas al metodo
m.Invoke(Me, Nothing)

Pero deberías leer un poco más de objetos y un poco menos de
Microsoft.



Justamente, lo que digo es menos Microsoft y mas orientado a objetos ya que
Reflection es algo de .net y no de programacion orientada a objetos.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida