Atributos Personalizados

24/02/2004 - 17:30 por Scott Allen | Informe spam
Hola,

Es posible aplicar un atributo personalizado a una
variable privada o protected de una clase ?.

public class .{


[Atributo("xxxxxxx")]
protected System.Windows.Forms.TextBox DS_EMAIL;

[Atributo("xxxx")]
private System.Windows.Forms.TextBox DS_LOGIN;

...
}

He intentado acceder en tiempo de ejecución a los
atributos pero no lo consigo.

Gracias

Preguntas similare

Leer las respuestas

#1 Ariel Popovsky
28/02/2004 - 15:55 | Informe spam
Si, puedes, 1ro tienes que crear tu atributo personalizado, tiene que ser
una clase que extienda System.Attribute. Puedes (no recuerdo si es
obligatorio) marcar tu atributo con un atributo que indica si se usará en
clases, propiedades, campos o métodos y si será heredada en las clases que
lo utilicen.
Un ejemplo:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field,
Inherited=true)]

internal class XMLOutputAttribute:Attribute
{
...
}

Esto define el atributo XMLOutput.

Para leerlo después via Reflection usas:
XMLOutputAttribute att = (XMLOutputAttribute)
Attribute.GetCustomAttribute(mbrInfo[0], typeof(XMLOutputAttribute));

Donde mbrInfo en este caso es de tipo PropertyInfo, y lo obtengo con
PropertyInfo[] mbrInfo = objeto.GetType().GetProperties();

Espero que te sirva! Saludos!
Ariel Popovsky
Buenos Aires
"Scott Allen" wrote in message
news:087d01c3faf3$8c6ff410$
Hola,

Es posible aplicar un atributo personalizado a una
variable privada o protected de una clase ?.

public class .{


[Atributo("xxxxxxx")]
protected System.Windows.Forms.TextBox DS_EMAIL;

[Atributo("xxxx")]
private System.Windows.Forms.TextBox DS_LOGIN;

...
}

He intentado acceder en tiempo de ejecución a los
atributos pero no lo consigo.

Gracias
Respuesta Responder a este mensaje
#2 Octavio Hernandez
29/02/2004 - 00:42 | Informe spam
Hola,

*Sí* es posible asociar atributos a esos campos. Lo único es que para poder
acceder a esos campos necesitarás sobre el objeto Type de la clase utilizar
la llamada a GetFields() que utiliza un parámetro lllamado BindingFlags, y
especificar BindingFlags.NonPublic. Si no utilizas esa opción, por defecto
sólo obtendrás los campos públicos de la clase.

A partir de ahí, todo es como indica Ariel en su mensaje.

Salu2,

Octavio



"Scott Allen" escribió en el mensaje
news:087d01c3faf3$8c6ff410$
Hola,

Es posible aplicar un atributo personalizado a una
variable privada o protected de una clase ?.

public class .{


[Atributo("xxxxxxx")]
protected System.Windows.Forms.TextBox DS_EMAIL;

[Atributo("xxxx")]
private System.Windows.Forms.TextBox DS_LOGIN;

...
}

He intentado acceder en tiempo de ejecución a los
atributos pero no lo consigo.

Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida