Tengo una clase con varias propiedades públicas que les permito a los usuarios editar a través de una grilla de propiedades. Para la persistencia, esta clase también se serializa/deserializa a/desde un archivo XML a través de DataContractSerializer.¿Cómo puedo hacer una versión de solo lectura de una clase?
A veces deseo que el usuario pueda guardar (serializar) los cambios que ha realizado en una instancia de la clase. Sin embargo, en otras ocasiones no quiero permitir que el usuario guarde sus cambios, y en su lugar debería ver todas las propiedades en la cuadrícula de propiedades como de solo lectura. No quiero permitir que los usuarios realicen cambios que nunca podrán guardar más adelante. Similar a cómo MS Word permitirá a los usuarios abrir documentos que actualmente otros abren pero solo como de solo lectura.
Mi clase tiene una propiedad booleana que determina si la clase debe ser de solo lectura, pero ¿es posible usar esta propiedad para agregar dinámicamente atributos de solo lectura a las propiedades de la clase en tiempo de ejecución? Si no, ¿qué es una solución alternativa? ¿Debo incluir mi clase en una clase contenedora de solo lectura?
Gracias! Lamentablemente, la opción 2 no funciona porque la cuadrícula de propiedades usará la reflexión para descubrir que las propiedades reales detrás de una interfaz no son solo de lectura. Entonces parece que la opción 3 es la mejor respuesta para mí. Aunque me gusta su sugerencia de combinar las opciones 2 y 3. –
No puedo expresar cómo esta respuesta es una de las más concisas y completas que encontré en la web. –