Pregunta

¿Hay alguna manera (utilizando Reflexión espero) que puedo hacer que un objeto instanciado inmutable junto con todas sus propiedades públicas ? Tengo una clase de algún otro código base (sin fuente disponible) que necesito para utilizar y que básicamente quiere una excepción que se produce si cualquier pieza de código en cualquier lugar intenta llamar a un colocador pública dentro de esta clase después de que se ha creado una instancia.

Nota: No quiero crear un objeto contenedor alrededor de la clase con el fin de implementar esto. Soy perezoso.

¿Fue útil?

Solución

No se que no es a través de la reflexión. definiciones de tipos no se pueden modificar en tiempo de ejecución a través de la reflexión y por lo tanto no puede ser utilizado como un dispositivo para hacer un tipo inmutable.

Pero la reflexión puede ser utilizado para violar la inmutabilidad de un tipo. Por ejemplo, es posible establecer las propiedades marcadas con sólo lectura a través de la reflexión mucho después de que el constructor se ha ejecutado.

Otros consejos

Me resulta difícil creer que usted está dispuesto a introducir código de reflexión para hacer algo que puede ser simplemente resuelve con una clase contenedora.

Una pequeña inversión de su tiempo ahora le ahorrará un montón de tiempo de dolor más tarde, cuando se rompe el código de reflexión o requiere modificación. Una clase contenedora es simple, fácil de implementar, es de tipo seguro, y tendrá sentido a otros desarrolladores en el camino. No deje que la pereza dictan sus opciones de arquitectura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top