本文整理汇总了C#中INamedTypeSymbol.IsInterface方法的典型用法代码示例。如果您正苦于以下问题:C# INamedTypeSymbol.IsInterface方法的具体用法?C# INamedTypeSymbol.IsInterface怎么用?C# INamedTypeSymbol.IsInterface使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类INamedTypeSymbol
的用法示例。
在下文中一共展示了INamedTypeSymbol.IsInterface方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReportIssue
private static void ReportIssue(INamedTypeSymbol interfaceType, INamedTypeSymbol expressionType, Location issueLocation,
SyntaxNodeAnalysisContext context)
{
var interfaceTypeName = interfaceType.ToMinimalDisplayString(context.SemanticModel, issueLocation.SourceSpan.Start);
var expressionTypeName = expressionType.ToMinimalDisplayString(context.SemanticModel, issueLocation.SourceSpan.Start);
var messageReasoning = expressionType.IsInterface()
? $"implements both \"{expressionTypeName}\" and \"{interfaceTypeName}\""
: $"extends \"{expressionTypeName}\" and implements \"{interfaceTypeName}\"";
context.ReportDiagnostic(Diagnostic.Create(Rule, issueLocation, string.Format(MessageReviewFormat, messageReasoning)));
}
示例2: CheckTypesForInvalidCast
private static void CheckTypesForInvalidCast(INamedTypeSymbol interfaceType, INamedTypeSymbol expressionType,
Dictionary<INamedTypeSymbol, HashSet<INamedTypeSymbol>> interfaceImplementerMappings, Location issueLocation,
SyntaxNodeAnalysisContext context)
{
if (interfaceType == null ||
expressionType == null ||
!interfaceType.IsInterface() ||
expressionType.Is(KnownType.System_Object))
{
return;
}
if (!HasExistingConcreteImplementation(interfaceType, interfaceImplementerMappings))
{
return;
}
if (expressionType.IsInterface() &&
!HasExistingConcreteImplementation(expressionType, interfaceImplementerMappings))
{
return;
}
if (interfaceImplementerMappings.ContainsKey(interfaceType.OriginalDefinition) &&
!interfaceImplementerMappings[interfaceType.OriginalDefinition].Any(t => t.DerivesOrImplements(expressionType.OriginalDefinition)))
{
ReportIssue(interfaceType, expressionType, issueLocation, context);
}
}