本文整理汇总了C#中Microsoft.CodeAnalysis.SemanticModel.GetOriginalSemanticModel方法的典型用法代码示例。如果您正苦于以下问题:C# SemanticModel.GetOriginalSemanticModel方法的具体用法?C# SemanticModel.GetOriginalSemanticModel怎么用?C# SemanticModel.GetOriginalSemanticModel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.SemanticModel
的用法示例。
在下文中一共展示了SemanticModel.GetOriginalSemanticModel方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FindApplicableAlias
public static async Task<ISymbol> FindApplicableAlias(this ITypeSymbol type, int position, SemanticModel semanticModel, CancellationToken cancellationToken)
{
try
{
if (semanticModel.IsSpeculativeSemanticModel)
{
position = semanticModel.OriginalPositionForSpeculation;
semanticModel = semanticModel.ParentModel;
}
var root = await semanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
IEnumerable<UsingDirectiveSyntax> applicableUsings = GetApplicableUsings(position, root as CompilationUnitSyntax);
foreach (var applicableUsing in applicableUsings)
{
var alias = semanticModel.GetOriginalSemanticModel().GetDeclaredSymbol(applicableUsing, cancellationToken);
if (alias != null && alias.Target == type)
{
return alias;
}
}
return null;
}
catch (Exception e) when (FatalError.ReportUnlessCanceled(e))
{
throw ExceptionUtilities.Unreachable;
}
}
示例2: FindApplicableAlias
public static async Task<ISymbol> FindApplicableAlias(this ITypeSymbol type, int position, SemanticModel semanticModel, CancellationToken cancellationToken)
{
var token = semanticModel.SyntaxTree.FindTokenOnLeftOfPosition(position, cancellationToken);
var declaration = token.GetAncestor<MemberDeclarationSyntax>();
if (declaration != null)
{
position = declaration.SpanStart;
}
var root = await semanticModel.GetOriginalSemanticModel().SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
IEnumerable<UsingDirectiveSyntax> applicableUsings = GetApplicableUsings(position, root as CompilationUnitSyntax);
foreach (var applicableUsing in applicableUsings)
{
var alias = semanticModel.GetOriginalSemanticModel().GetDeclaredSymbol(applicableUsing, cancellationToken);
if (alias != null && alias.Target == type)
{
return alias;
}
}
return null;
}