Я пытаюсь использовать рефлексию, чтобы получить свойство из класса. Вот пример кода того, что я вижу:
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;
}
}
}
Когда я прослеживаю это, вот что я вижу:
- Когда я выбираю все свойства, используя
GetProperties()
, результирующий массив имеет одну запись для свойства TestProp
.
- Когда я пытаюсь получить
TestProp
, используя GetProperty()
, я получаю нулевое значение.
Я немного озадачен; Я не смог найти в MSDN ничего относительно GetProperty()
, чтобы объяснить мне этот результат. Любая помощь?
EDIT:
Если я добавлю BindingFlags.Instance
к вызову GetProperties()
, свойства не найдены, точка. Это более последовательно и заставляет меня полагать, что TestProp
по какой-то причине не считается свойством экземпляра.
С чего бы это? Что мне нужно сделать с классом, чтобы это свойство считалось свойством экземпляра?