Привет, ребята, я получаю сообщение об ошибке: «Ссылка на объект не установлена в экземпляр объекта». Я не совсем уверен, почему ... Вот код:C# «Ссылка на объект не установлена в экземпляр объекта» Get Type/Get Property
public void LoadUserContacts(ListBox FriendsLb)
{
FriendsLb.DisplayMember = "Display";
var query = from o in Globals.DB.Friends
where o.UserEmail == Properties.Settings.Default.Email
select new
{
FirstName = o.FirstName,
LastName = o.LastName,
Email = o.Email,
Display = string.Format("{0} {1} - ({2})", o.FirstName, o.LastName, o.Email),
};
FriendsLb.DrawMode = DrawMode.OwnerDrawVariable;
foreach (object contact in query.ToList())
{
string details = query.GetType().GetProperty("Display").ToString();
FriendsLb.Items.Add(new Contacts(Properties.Resources.avatar, details));
FriendsLb.DrawItem += FriendsLb_DrawItem;
FriendsLb.MeasureItem += FriendsLb_MeasureItem;
}
}
Какой код вызывает ошибку:
string details = query.GetType().GetProperty("Display").ToString();
Любые идеи? Я пытаюсь получить свойство отображения из запроса:
Display = string.Format("{0} {1} - ({2})", o.FirstName, o.LastName, o.Email),
Это не дубликат, связанный вопрос не имеет такой же проблемы, так как проблема здесь заключается в непонимании того, как писать код и какие его части. –
Тип запроса - 'System.Linq.Enumerable.WhereSelectEnumerableIterator' '' '' 'тип объекта, который вы используете в' from', а 'K' - тип анонимного объекта, который вы создали в select. Таким образом, 'query.GetType(). GetProperty (« Display »)' возвращает значение null, поскольку в возвращаемом типе нет свойства «Display», а затем вызывается 'ToString()', он вызывает исключение ссылочной ссылки. Чтобы решить проблему, используя отражение, следуйте за тем, что сказано @MikaelPuusaari, получите свойство из элемента цикла. –
** Но вы должны знать, что вам не нужно отражать, чтобы получить значение из элементов запроса. ** Просто используйте простой цикл foreach: таким образом: 'foreach (элемент var в запросе) { string details = item.Display; } ' –