diff --git a/src/Shared/Roslyn/MvcFacts.cs b/src/Shared/Roslyn/MvcFacts.cs index f8408803a598..d4c74f64fb78 100644 --- a/src/Shared/Roslyn/MvcFacts.cs +++ b/src/Shared/Roslyn/MvcFacts.cs @@ -70,7 +70,8 @@ public static bool IsControllerAction(IMethodSymbol method, INamedTypeSymbol non } // Overridden methods from Object class, e.g. Equals(Object), GetHashCode(), etc., are not valid. - if (GetDeclaringType(method).SpecialType == SpecialType.System_Object) + var declaringType = GetDeclaringType(method); + if (declaringType == null || declaringType.SpecialType == SpecialType.System_Object) { return false; } @@ -98,13 +99,13 @@ public static bool IsControllerAction(IMethodSymbol method, INamedTypeSymbol non return method.DeclaredAccessibility == Accessibility.Public; } - private static INamedTypeSymbol GetDeclaringType(IMethodSymbol method) + private static INamedTypeSymbol? GetDeclaringType(IMethodSymbol method) { while (method.IsOverride) { if (method.OverriddenMethod == null) { - throw new InvalidOperationException($"{nameof(method.OverriddenMethod)} cannot be null."); + return null; } method = method.OverriddenMethod;