使用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)
答案 0 :(得分:2)
如果您的问题特定于foreach
,则应使用SemanticModel.GetForEachStatementInfo()
,其中会返回ForEachStatementInfo
并提供所有必要信息。
答案 1 :(得分:1)
你可以做的是获取你得到的TypeInfo,然后查看ImplementedInterfaces属性。其中一个是IEnumerable或ICollection,从那里你可以看看泛型参数是什么。
如果你确实在某个地方有过ForEach,那么你最好还是使用Tamas'方法,因为那将正确地实现那里的语言规则。