[英]Use reflection to get actual return type form Task<List<Dictionary<string,object>>> instead of object
我試圖獲取包含在任務本身中包含的列表中的實際對象。
方法具有以下簽名,例如
public async Task<List<Dictionary<string,object>>> GetData()
我目前正在使用這樣的東西:
var member = type.GetMembers()[0];
var returntype = member.ReturnType.GetGenericArguments();
var temp = member.ReturnType.GetGenericArguments()[0];
if (temp.GetGenericArguments().Count() > 0)
{
temp.GetTypeInfo().GetGenericArguments();
var innerttype = temp.GetGenericArguments()[0].FullName;
}
當前,以上代碼(還不完整,僅是實際代碼的一部分)返回system.object作為全名而不是Dictionary。
歡迎提供解決此問題的任何建議。
如果您將字典聲明為<string, object>
類型,並且只在其中插入對象,而不在圖中插入更高的對象,則只會從中獲得object
類型的對象。
如果要在其中存儲各種各樣的東西,並且需要獲取它們的具體類型以便可以與它們交互,請嘗試首先使它們全部符合接口。 然后,在其中放置接口類型以替換“對象”。 如果這樣不起作用,則可以使用泛型。 但是,您仍然需要提前知道類型以便能夠與它進行交互。
如果您真的不知道其中包含什么,並想動態地進行深入研究,那正是Reflection的目的。 您也可以查看dynamic
類型 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.