簡體   English   中英

使用Roslyn獲取集合類型

[英]Get Type of Collection using Roslyn

使用Roslyn for VB.Net我可以使用下面的代碼獲取表達式的類型。

Dim ExpressionType As TypeInfo = SemanticModel.GetTypeInfo(ForEachStatement.Expression)

如果表達式是一個集合(List,Dictionary,Array,Collection ...),我怎樣才能找到集合中的內容? 對於下面的示例,我想找到DocumentIdAndRoot

Dim docs As List(Of DocumentIdAndRoot) = Await RemoveParameterAsync(document, parameter, root, cancellationToken)

如果您的問題特定於foreach ,那么您應該使用SemanticModel.GetForEachStatementInfo() ,它返回包含所有必要信息的ForEachStatementInfo

你可以做的是獲取你得到的TypeInfo,並查看ImplementedInterfaces屬性。 其中一個是IEnumerable或ICollection,從那里你可以看看泛型參數是什么。

如果你確實有某個ForEach涉及到某個地方,你仍然可以更好地使用Tamas的方法,因為那樣可以正確地實現那里的語言規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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