visual studio qué polimorfismo herencia heredar form español ejemplo como c# reflection

studio - ¿Por qué la reflexión puede acceder a miembros protegidos/privados de clase en C#?



visual studio c# herencia (3)

Esto es necesario para escenarios como la comunicación remota, la serialización, la materialización, etc. No debe usarlo a ciegas, pero tenga en cuenta que estas instalaciones siempre han estado disponibles en cualquier sistema (esencialmente, dirigiéndose directamente a la memoria). La reflexión simplemente lo formaliza, y coloca los controles y las comprobaciones de la manera que no está viendo porque probablemente se está ejecutando en "plena confianza", por lo que ya es más fuerte que el sistema que se está protegiendo.

Si lo intentas con confianza parcial, verás mucho más control sobre el estado interno.

¿Es un anti-patrón?

Solo si su código lo usa inapropiadamente. Por ejemplo, considere lo siguiente (válido para un contrato de datos WCF):

[DataMember] private int foo; public int Foo { get {return foo;} set {foo = value;} }

¿Es incorrecto que WCF apoye esto? Sospecho que no ... hay varios escenarios en los que desea serializar algo que no es parte de la API pública, sin tener un DTO separado. Del mismo modo, LINQ-to-SQL se materializará en miembros privados si así lo elige.

¿Por qué la reflexión puede acceder a miembros protegidos / privados de clase en C #?

¿No es seguro para la clase, por qué se le otorga tal poder a la reflexión? ¿Es este un anti-pattern ?


La reflexión es absolutamente necesaria para un depurador. Imagine que está recorriendo su programa y no puede ver los valores de sus variables privadas. Esa es probablemente la razón por la que la reflexión funciona en .NET y Java de la forma en que funciona, para que la depuración sea realmente fácil.

Si no necesitamos depuradores, entonces puedo imaginar que la reflexión se restringiría más en el espíritu de la OOP .


La accesibilidad de los miembros no es una característica de seguridad. Está ahí para proteger al programador contra sí mismo. Ayuda a implementar la encapsulación, pero de ninguna manera es una característica de seguridad.

La reflexión es lo suficientemente tediosa como para que las personas normalmente no la usen para acceder a miembros no públicos. También es bastante lento. La reflexión se usa normalmente solo en casos especiales. Sin embargo, nada puede proteger completamente contra la estupidez humana, si alguien quiere abusar de la reflexión, puede hacerlo fácilmente, pero incluso sin la API de reflexión, puede lograr lo mismo (si se está ejecutando con plena confianza, es decir) si Están suficientemente decididos.