本文整理汇总了C#中StatisAnalysisSession.GetSessionObjectOfType方法的典型用法代码示例。如果您正苦于以下问题:C# StatisAnalysisSession.GetSessionObjectOfType方法的具体用法?C# StatisAnalysisSession.GetSessionObjectOfType怎么用?C# StatisAnalysisSession.GetSessionObjectOfType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StatisAnalysisSession
的用法示例。
在下文中一共展示了StatisAnalysisSession.GetSessionObjectOfType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: IsAchievementUnlocked
public override bool IsAchievementUnlocked(StatisAnalysisSession statisAnalysisSession)
{
// Return out if there are no files to check achievements in.
if (!statisAnalysisSession.StaticAnalysisManifest.ChangedFiles.Any())
{
return false;
}
// Obtain a session object and the codebase type declarations
var nrefactorySession = statisAnalysisSession.GetSessionObjectOfType<NRefactorySession>();
NRefactoryContext = new NRefactoryContext()
{
CodebaseDeclarations = nrefactorySession.GetCodebaseDeclarations(statisAnalysisSession.StaticAnalysisManifest),
InvokedSystemTypes = nrefactorySession.GetSystemInvocations(statisAnalysisSession.StaticAnalysisManifest)
};
// Have the concrete implementation create it's visitor
var visitor = CreateVisitor(statisAnalysisSession);
// Parse all files in the changed files collection for achievements
foreach (var filename in statisAnalysisSession.StaticAnalysisManifest.ChangedFiles)
{
// Obtain a parser from the nrefactorySession.
// This parser is shared context between all concrete achievement implementations.
var compilationUnit = nrefactorySession.GetCompilationUnit(filename);
// Pass concrete visitor into the AST created by the parser
compilationUnit.AcceptVisitor(visitor, null);
// Call OnParsingCompleted on the visitor to give it a last chance to unlock achievements.
visitor.OnParsingCompleted();
// Check if the visitor declared the concrete achievement as unlocked.
if (visitor.IsAchievementUnlocked)
{
AchievementCodeOrigin = visitor.CodeOrigin;
if (AchievementCodeOrigin != null)
{
AchievementCodeOrigin.FileName = filename;
}
return true;
}
}
return false;
}