![](/img/trans.png)
[英]Type “object {System.Collections.Generic.List<T>}” VS “System.Collections.Generic.List<T>”
[英]How to handle type “Object {System.Collections.Generic.List<object>}”
這是我第一次遇到這樣的物體。
簡而言之,當“測試”給出的唯一方法與普通對象完全相同,並且我不知道將其強制轉換為什么時,如何訪問CardNO或ItemID的值(分別為296和130)。 我什至無法執行此“ test [0]”。
這是“測試”的來源:
private void ListBoxIssue_OnDragEnter(object sender, DragEventArgs e)
{
var test = DragDropPayloadManager.GetDataFromObject(e.Data, typeof(CommsItem));
}
采用
var item = (CommsItem)((List<object>)test).FirstOrDefault();
在轉換之前,請務必先檢查test
是否是List<object>
的實例,以及test [0]是否是CommsItem的實例。
您需要將List<Object>
List<CommsItem>
為List<CommsItem>
。
例:
var test = DragDropPayloadManager.GetDataFromObject(e.Data, typeof(CommsItem)).Cast<CommsItem>().ToList();
或強制轉換每個單獨的元素:
CommsItem element = (test[0] as CommsItem);
它將返回CommsItem
轉換為CommsItem
的element
,除非它不是該類型或不屬於該類型,在這種情況下,它將返回null。
因此,要回答您的問題,您可以通過以下方式訪問它們:
string CardNO = (test[0] as CommsItem).CardNO;
要么
var test = DragDropPayloadManager.GetDataFromObject(e.Data, typeof(CommsItem)).Cast<CommsItem>().ToList();
string CardNO = test[0].CardNO;
(如果使用第一種方法,則不需要強制轉換)
您正在執行的操作是將List<object>
, test
轉換為List<CommsItem>
,您可以使用它訪問屬性,或簡單地轉換每個項目。
更簡單地說:
var item = ((List<object>)test).Cast<CommsItem>().FirstOrDefault();
如果您的列表不是CommsItem
列表, CommsItem
返回一個空列表。 FirstOrDefault()
確保僅獲取第一項,如果沒有第一項,則該項的默認值(對於引用對象,此null
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.