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