2011-02-05 24 views
5

Atributos nos ayuda a utilizar valores dependientes de la clase en lugar de instancias y nos ayudan a llevar algunos valores sin una fuerte relación con nuestras clases. Pero encontré algunas restricciones en los atributos. No podemos cambiar estos valores en tiempo de ejecución. Así que estoy buscando una forma de utilizar un concepto similar a los atributos, ya que hemos visto muchas clases de configuración de ejemplo mediante apis con fluidez en lugar de atributos. ¿Conoces una biblioteca tan lista? ¿Cuál es una alternativa para usar el concepto de atributo para evitar restricciones de atributos?¿Cuál es la alternativa de los atributos?

+0

¿A qué se refiere? – gunwin

+0

¿Puedes dar un ejemplo de algo que hayas implementado con atributos pero quieras cambiar en tiempo de ejecución? –

+0

@justin: quiero representar los objetos por un tipo de salida xml, así que quiero escribir algunos atributos personalizados para los valores de retención, pero los usuarios deberían poder cambiar sus representaciones de objetos. – Freshblood

Respuesta

3

En realidad, en algunos casos puede ajustar atributos en tiempo de ejecución, por ejemplo, a través de TypeDescriptor, pero esto solo afecta el uso de ComponentModel, no el uso de la reflexión. También puede escribir el atributo en sí para hacer cosas como buscar resx para propósitos i18n.

Sin embargo, otras opciones:

  • tal vez una propiedad estática, tal vez siguiendo una convención de nomenclatura
  • un modelo de objeto independiente que habla de los tipos - un meta-modelo, por así decirlo
  • una configuración archivo o similar

Cualquiera funcionará; Lo mejor depende de lo que tienes en mente.

0

Una buena sustitución del atributo en una arquitectura de complemento podría estar utilizando convenciones de nomenclatura inteligente.

0

Tal vez me falta algo, ¿pero no puede simplemente agregar propiedades con un public setter a sus atributos personalizados? Acabo de probar esto en una implementación donde uso atributos, y puedo cambiar esta propiedad en tiempo de ejecución sin ningún problema.

¿Qué valores desea cambiar?

+0

Pero ha cambiado el valor de propiedad del atributo de la instancia. – Freshblood

+0

Veo, por lo que necesita ** persistencia ** para miembros modificables en sus atributos. No conozco ninguna biblioteca que ya implemente esto, pero parece posible. Su atributo personalizado probablemente pueda usar cualquier formulario (ini/resource file/serialization/...) para almacenar sus valores internos de manera persistente. Supongo que la serialización XML simple no le proporciona una solución, porque quiere cambiar la configuración en tiempo de ejecución. –

+0

Sí, quería poder cambiar los valores en el tiempo de ejecución. Creo que tengo que guardar la persistencia de los valores para que solo aparezcan en mi mente las preguntas sobre cómo guardarlos. Creo que elegiré el valor de guía del tipo para ello. – Freshblood

Cuestiones relacionadas