本文整理汇总了C#中Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxList.Cast方法的典型用法代码示例。如果您正苦于以下问题:C# SyntaxList.Cast方法的具体用法?C# SyntaxList.Cast怎么用?C# SyntaxList.Cast使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxList
的用法示例。
在下文中一共展示了SyntaxList.Cast方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Organize
public static void Organize(
SyntaxList<ExternAliasDirectiveSyntax> externAliasList,
SyntaxList<UsingDirectiveSyntax> usingList,
bool placeSystemNamespaceFirst,
out SyntaxList<ExternAliasDirectiveSyntax> organizedExternAliasList,
out SyntaxList<UsingDirectiveSyntax> organizedUsingList)
{
if (externAliasList.Count > 0 || usingList.Count > 0)
{
// Merge the list of usings and externs into one list.
// order them in the order that they were originally in the
// file.
var initialList = usingList.Cast<SyntaxNode>()
.Concat(externAliasList)
.OrderBy(n => n.SpanStart).ToList();
if (!initialList.SpansPreprocessorDirective())
{
// If there is a banner comment that precedes the nodes,
// then remove it and store it for later.
IEnumerable<SyntaxTrivia> leadingTrivia;
initialList[0] = initialList[0].GetNodeWithoutLeadingBannerAndPreprocessorDirectives(out leadingTrivia);
var comparer = placeSystemNamespaceFirst
? UsingsAndExternAliasesDirectiveComparer.SystemFirstInstance
: UsingsAndExternAliasesDirectiveComparer.NormalInstance;
var finalList = initialList.OrderBy(comparer).ToList();
// Check if sorting the list actually changed anything. If not, then we don't
// need to make any changes to the file.
if (!finalList.SequenceEqual(initialList))
{
// Make sure newlines are correct between nodes.
EnsureNewLines(finalList);
// Reattach the banner.
finalList[0] = finalList[0].WithPrependedLeadingTrivia(leadingTrivia);
// Now split out the externs and usings back into two separate lists.
organizedExternAliasList = finalList.Where(t => t is ExternAliasDirectiveSyntax)
.Cast<ExternAliasDirectiveSyntax>()
.ToSyntaxList();
organizedUsingList = finalList.Where(t => t is UsingDirectiveSyntax)
.Cast<UsingDirectiveSyntax>()
.ToSyntaxList();
return;
}
}
}
organizedExternAliasList = externAliasList;
organizedUsingList = usingList;
}