2016-07-03 5 views
0

こんにちは、私はエラーが表示されます: "オブジェクト参照がオブジェクトのインスタンスに設定されていません"。C# "オブジェクト参照がオブジェクトのインスタンスに設定されていません" Get Type/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), 
+1

これは重複していません。リンクされた質問には全く同じ問題はありません。ここでの問題はコードの記述方法とその部分の誤解です。 –

+1

クエリのタイプは 'from.'で使用するオブジェクトのタイプで、' K'はselectで作成した匿名オブジェクトのタイプです 'System.Linq.Enumerable.WhereSelectEnumerableIterator 'です。だから 'query.GetType()。GetProperty(" Display ")'は、返された型に "Display"プロパティがなく、その上で 'ToString()'を呼び出すとnull参照例外が発生するため、nullを返します。 リフレクションを使用して問題を解決するには、@MikaelPuusaariによると、ループの項目からプロパティを取得します。 –

+2

**クエリの項目から値を得るためにリフレクションが必要ないことを知っておくべきです。**このように簡単な 'foreach'ループを使用してください: ' foreach(クエリ内のvarアイテム) { string詳細= item.Display; } ' –

答えて

0

あなたは、列の戻り値、クエリの種類、およびタイプの「表示」の後、プロパティを取得しないようにしようとしていますデータベース内

クエリの型にはプロパティ "display"がありません。

string property = contact.GetProperty("Display", typeof(string)); 

string details = property.Name; 

あなたは正しい軌道に乗ることを望みます。

また、その行にブレークポイントを設定して、行のどの部分がヌル参照であるかを確認し、問題の場所を簡単に特定します。

+0

はい、動作しますが返されます:System.Stringディスプレイの情報の代わりに表示:( – richardj97

+0

ありがとう! – richardj97

+0

少し変更されました。 –

関連する問題