una propiedades propiedad metodos metodo mandar llamar informatica esperaba entre diferencia definicion como clase campo autoimplementadas acceso c# reflection

c# - metodos - propiedades en informatica definicion



¿Cómo obtener el valor de un campo estático privado de una clase? (5)

¿Hay alguna manera de obtener valor del campo estático privado de la clase conocida mediante la reflexión?



Pruebe algo como esto:

Type type = typeof(MyClass); MemberInfo[] members = type.GetMembers(BindingFlags.NonPublic | BindingFlags.Static);

Yo pensaría que debería funcionar.


Sí.

Type type = typeof(TheClass); FieldInfo info = type.GetField(name, BindingFlags.NonPublic | BindingFlags.Static); object value = info.GetValue(null);

Esto es para un campo. Para una propiedad, cambie type.GetField a type.GetProperty . También puede acceder a métodos privados de manera similar.


Si tiene plena confianza, debería poder:

Type t = typeof(TheClass); FieldInfo field = t.GetField("myFieldName", BindingFlags.NonPublic | BindingFlags.Static); object fieldValue = field.GetValue(myObject);

Sin embargo, si ejecuta esto en un sistema sin plena confianza, la llamada GetField fallará, y esto no funcionará.


Supongo que alguien debería preguntar si esta es una buena idea o no. Crea una dependencia en la implementación privada de esta clase estática. La implementación privada está sujeta a cambios sin previo aviso a las personas que utilizan Reflection para acceder a la implementación privada.

Si las dos clases están pensadas para funcionar juntas, considere hacer el campo interno y agregar el conjunto de la clase cooperadora en un atributo [assembly: InternalsVisibleTo].