protected override EvaluationResult EvaluateImpl(SyntaxNode node)
{
var classDeclaration = (ClassDeclarationSyntax)node;
if (classDeclaration.BaseList != null
&& (classDeclaration.BaseList.Types.Any(x => x.Type.IsKind(SyntaxKind.IdentifierName)) || classDeclaration.BaseList.Types.Any(x => x.Type.IsKind(SyntaxKind.GenericName))))
{
var s = classDeclaration.BaseList.Types.First(x => x.Type.IsKind(SyntaxKind.IdentifierName) || x.Type.IsKind(SyntaxKind.GenericName));
if (((SimpleNameSyntax)s.Type).Identifier.ValueText.StartsWith("I")
&& classDeclaration.Modifiers.Any(SyntaxKind.PublicKeyword))
{
var interfaceName = ((SimpleNameSyntax)s.Type).Identifier.ValueText;
if (!IsKnownInterface(interfaceName))
{
var snippet = classDeclaration.ToFullString();
return new EvaluationResult
{
Snippet = snippet
};
}
}
}
return null;
}