diff --git a/InterfaceReference.cs b/InterfaceReference.cs index 4547943..a01c33f 100644 --- a/InterfaceReference.cs +++ b/InterfaceReference.cs @@ -30,25 +30,18 @@ CancellationToken cancellationToken ) { if ((reference.Node.Parent?.Parent is not InvocationExpressionSyntax invocationExpression) || - (reference.Symbol is not INamedTypeSymbol interfaceSymbol)) + (reference.Symbol is not INamedTypeSymbol interfaceSymbol) || + (reference.SemanticModel.GetOperation(invocationExpression, cancellationToken) is not + IInvocationOperation methodInvocation)) { return null; } - var semanticModel = reference.SemanticModel!; - var methodInvocation = semanticModel - .GetOperation(invocationExpression, cancellationToken) as IInvocationOperation; - if (methodInvocation is not null) - { - var isInterfaceOrMethodOpenGeneric = !reference.IsSyntaxReferenceClosedTypeOrMethod || - methodInvocation.TargetMethod.TypeArguments.Any(static x => x is not INamedTypeSymbol); - return new InterfaceReference - ( - interfaceSymbol, - methodInvocation, - isInterfaceOrMethodOpenGeneric - ); - } - return null; + return new InterfaceReference + ( + interfaceSymbol, + methodInvocation, + !reference.IsSyntaxReferenceClosedTypeOrMethod + ); } public static InterfaceReference? GetReference(IInvocationOperation invocation) diff --git a/Monkeymoto.NativeGenericDelegates.csproj b/Monkeymoto.NativeGenericDelegates.csproj index 27d19c4..fb79c52 100644 --- a/Monkeymoto.NativeGenericDelegates.csproj +++ b/Monkeymoto.NativeGenericDelegates.csproj @@ -18,7 +18,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all true