in src/Google.Cloud.Functions.Hosting/HostingInternals.cs [259:268]
private static List<Type> FindValidFunctionTypes(params Type[] types)
{
return types.Where(IsFunctionClass).ToList();
static bool IsFunctionClass(Type t) =>
t.IsClass && !t.IsAbstract && !t.IsGenericType &&
(typeof(IHttpFunction).IsAssignableFrom(t) ||
typeof(ICloudEventFunction).IsAssignableFrom(t) ||
GetGenericInterfaceImplementationTypeArgument(t, typeof(ICloudEventFunction<>)) is object) ||
GetGenericInterfaceImplementationTypeArguments(t, typeof(ITypedFunction<,>)) is object;
}