簡體   English   中英

使用反射獲取實際的返回類型表單Task <List<Dictionary<string,object> &gt;&gt;代替對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM