Cargar variables dinámicamente

20/04/2004 - 13:04 por Germán | Informe spam
Tengo una serie de variables definidas en un formulario:

public class
{

private int NM_ACCESOS = 0;

private const int NM_INTENTOS = 0;
ó
private readonly int NM_INTENTOS = 0;

}

Por reflexión accedo a los campos Field del formulario
y establezco un valor, algo así:

public static void AsignarValor(FieldInfo campoField,
object o, object valor)
{
// Valor Campo Field del objeto
object valorField = campoField.GetValue(o);

if (valorField != null)
{
campoField.SetValue(o, valor);
}

El caso que para

private const int NM_INTENTOS = 0;

me da el error

"No se puede establecer un campo final."

La cuestión es que no se puede asignar un valor aun const
o readonly, entonces a partir de un Field cómo puedo
saber que es un const o readonly ?


Otra cosa

// Valor Campo Field del objeto
object valorField = campoField.GetValue(o);

me devuelve el valor de la variable para

private int NM_ACCESOS = 0;

pero si fuera algo así

private TextBox DS_NOMBRE;

qué me devolvería entonces ?.

Muchos saludos.
 

Leer las respuestas

#1 Pedro Luna Montalvo
20/04/2004 - 15:23 | Informe spam
1. Una vez que tienes el elemento, la clase FieldInfo tiene una propiedad
IsLiteral que indica si el campo corresponde a un valor constante o no.

2. Te retorna una referencia al objeto apuntado por la variable DS_NOMBRE,
en otras palabras, una referencia al Textbox (si ese campo tuviera asignado
uno, claro)

Saludos
Pedro Luna
Gye, Ecu





"Germán" escribió en el mensaje
news:17c101c426c7$4a7697d0$

Tengo una serie de variables definidas en un formulario:

public class
{

private int NM_ACCESOS = 0;

private const int NM_INTENTOS = 0;
ó
private readonly int NM_INTENTOS = 0;

}

Por reflexión accedo a los campos Field del formulario
y establezco un valor, algo así:

public static void AsignarValor(FieldInfo campoField,
object o, object valor)
{
// Valor Campo Field del objeto
object valorField = campoField.GetValue(o);

if (valorField != null)
{
campoField.SetValue(o, valor);
}

El caso que para

private const int NM_INTENTOS = 0;

me da el error

"No se puede establecer un campo final."

La cuestión es que no se puede asignar un valor aun const
o readonly, entonces a partir de un Field cómo puedo
saber que es un const o readonly ?


Otra cosa

// Valor Campo Field del objeto
object valorField = campoField.GetValue(o);

me devuelve el valor de la variable para

private int NM_ACCESOS = 0;

pero si fuera algo así

private TextBox DS_NOMBRE;

qué me devolvería entonces ?.

Muchos saludos.

Preguntas similares