Estoy tratando de usar el reflejo para obtener una propiedad de una clase. Aquí hay un código de ejemplo de lo que estoy viendo:¿Por qué GetProperty no puede encontrarlo?
using System.Reflection;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
PropertyInfo[] tmp2 = typeof(TestClass).GetProperties();
PropertyInfo test = typeof(TestClass).GetProperty(
"TestProp", BindingFlags.Public | BindingFlags.NonPublic);
}
}
public class TestClass
{
public Int32 TestProp
{
get;
set;
}
}
}
Cuando trazo a través de este, esto es lo que veo:
- Cuando voy a buscar todas las propiedades utilizando
GetProperties()
, la matriz resultante tiene una entrada, para la propiedadTestProp
. - Cuando intento buscar
TestProp
usandoGetProperty()
, obtengo nulo de nuevo.
Estoy un poco perplejo; No he podido encontrar nada en MSDN con respecto al GetProperty()
para explicarme este resultado. ¿Alguna ayuda?
EDIT:
Si añado BindingFlags.Instance
a la llamada GetProperties()
, no hay propiedades se encuentran, y punto. Esto es más consistente y me lleva a creer que TestProp
no se considera una propiedad de instancia por algún motivo.
¿Por qué sería eso? ¿Qué debo hacer a la clase para que esta propiedad se considere una propiedad de instancia?
Si hago eso, GetProperties no devuelve nada, así, lo que es consistente en menos Pero la pregunta es: ¿qué debo hacer para encontrar la propiedad con GetProperty? ¿Por qué TestProp no se considera una propiedad de Instancia? –
... o ¿qué debo hacer para clasificar TestClass para que su propiedad aparezca como una propiedad de instancia? –
No pude duplicar su problema (aunque estoy usando VS2005, así que tuve que desarrollar su propiedad con una implementación). –