2015-10-31 2 views
0

У меня есть этот код для получения значения свойства на основе имени строкового свойстваПочему я получаю нулевое значение при попытке получить значение свойства на основе имени?

public class Person 
{ 
    public String LastName; 
}  
static void Main() 
{ 
    Person person1 = new Person { Born = new DateTime(1989, 10, 7), FirstName = "John", LastName = "Smith" }; 
    string propertytoGet = "LastName";   
    object wantedProperty = person1.GetType().GetProperty(propertytoGet).GetValue(person1, null);  
} 

Я получаю нулевое ссылочное исключение, так как GetProperty(propertytoGet) возвращает нулевое значение. Я нашел это решение в stackoverflow, он был отмечен как ответ, но он не работает для меня.

+0

Мне также хотелось бы, чтобы кто-нибудь подсказывал мне, как узнать из окна исключения визуальной студийной нулевой ссылки (которое, например, вызывается после запуска этого кода), какой из методов в последней строке вызывает исключение. – Vasiliy

+0

Извините, о моей ошибке невнимательности. Забыл написать {get; set} после LastName, т. Е. Это не было свойство. Метод работает отлично. – Vasiliy

ответ

-1

Извините, о моей ошибке невнимание. Забыл написать {get; set} после LastName, т. Е. Это не было свойство. Метод из последней строки отлично работает

+0

Проблема в том, что когда вы пропустили {get; set;}, член «LastName» не был «свойством» класса, но был «полем». И вот почему код .GetProperty падал с нулевым исключением, как уже упоминалось, такого свойства не существовало, это было поле. – Don

Смежные вопросы