2011-03-05 23 views
6

Con ASP.NET, por ejemplo, podríamos reflexionar sobre los ensamblajes en un Dominio de aplicación, o utilizando el tipo que podríamos obtener los metadatos sobre la clase (accesorios, métodos, etc.). ¿Cuál es la técnica utilizada para extraer metadatos en una clase, extraer propiedades de dependencia, etc. en Silverlight?Reflejo de Silverlight

Respuesta

5

La reflexión existe en Silverlight, con un subconjunto de las API proporcionadas en .NET Framework completo.

Una diferencia notable es que no se puede reflejar en los miembros privados en Silverlight (o tal vez se puede dentro de su propio conjunto, pero los límites deben ser evidentes con bastante rapidez). Esta es una característica de seguridad para garantizar que no se meta con las partes internas del marco.

Aparte de esa (es cierto, bastante grande) limitación, la reflexión debe ser básicamente la misma.

+0

Puede reflejar en miembros privados pero no puede modificarlos ni invocarlos. He intentado, por ejemplo, llamar a GetValue para un FieldInfo pero no pude llamar a SetValue, arroja una excepción. –

4

Además de lo que dijo Austin, la regla con Reflection en Silverlight es que solo se puede acceder a través de la reflexión a cualquier cosa que se pueda acceder a través del código normal. Entonces, no se trata solo de miembros privados. Puede reflejar sobre miembros protegidos solo en la clase misma o en cualquier clase que la herede.

Hay numerosas piezas que faltan de la API pero en general la mayoría de las cosas deberían ser posible, incluso si requieren un poco más de trabajo que en su totalidad .NET

0

Consideraciones de seguridad para la Reflexión Reflexión proporciona la capacidad de obtener información sobre tipos y miembros, y para acceder a los miembros. En Silverlight, puede usar la reflexión para realizar las siguientes tareas:

Enumerar tipos y miembros, y examinar sus metadatos.

Enumerar y examinar ensamblajes y módulos.

Acceda a miembros públicos.

Acceda a los miembros internos (miembros de Friend en Visual Basic) en el ensamblado del código de llamada. (En reflejo, esto se conoce como acceso de nivel de ensamblaje).

En Silverlight, no puede usar la reflexión para acceder a tipos y miembros privados. Si el nivel de acceso de un tipo o miembro le impide acceder a él en código compilado estáticamente, no puede acceder a él dinámicamente mediante el uso de la reflexión.

Cuestiones relacionadas