안녕하세요 여러분, 안녕하세요, "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."오류가 발생합니다. 내가 아주 확실하지 않다 ... 왜 여기에 코드입니다 : C# "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."형식/Get 속성 가져 오기
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'이며,'T'는'from'에서 사용하는 객체의 타입이고'K'는 select에서 생성 한 익명 객체의 타입입니다. 그래서'query.GetType(). GetProperty ("Display")'는 반환 된 타입에 "Display"속성이 없으므로 null을 반환하고, ToString()을 호출하면 null 참조 예외가 발생합니다. 반사를 사용하여 문제를 해결하려면 @MikaelPuusaari의 말에 따라 루프의 항목에서 속성을 가져옵니다. –
** 그러나 쿼리의 항목에서 가치를 얻으 려하지 않아도된다는 사실을 알고 있어야합니다. ** 간단한 'foreach' 루프를 다음과 같이 사용하십시오 : 'foreach (쿼리의 var 항목) { string details = item.Display; } –