こんにちは、私はエラーが表示されます: "オブジェクト参照がオブジェクトのインスタンスに設定されていません"。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),
これは重複していません。リンクされた質問には全く同じ問題はありません。ここでの問題はコードの記述方法とその部分の誤解です。 –
クエリのタイプは 'from.'で使用するオブジェクトのタイプで、' K'はselectで作成した匿名オブジェクトのタイプです 'System.Linq.Enumerable.WhereSelectEnumerableIterator'です。だから 'query.GetType()。GetProperty(" Display ")'は、返された型に "Display"プロパティがなく、その上で 'ToString()'を呼び出すとnull参照例外が発生するため、nullを返します。 リフレクションを使用して問題を解決するには、@MikaelPuusaariによると、ループの項目からプロパティを取得します。 –
**クエリの項目から値を得るためにリフレクションが必要ないことを知っておくべきです。**このように簡単な 'foreach'ループを使用してください: ' foreach(クエリ内のvarアイテム) { string詳細= item.Display; } ' –