private static MethodInfo FindAnnotatedMethod(object target, Type attribute)
        {
            var results = AttributeUtils.FindMethodsWithAttribute(
                target.GetType(),
                attribute,
                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            if (results.Count != 1)
            {
                throw new InvalidOperationException("Multiple methods with attribute: " + attribute.ToString() + " exist on type: " + target.GetType());
            }

            return(results[0]);
        }
        public static IServiceCollection AddServiceActivators(this IServiceCollection services, Type targetClass)
        {
            var targetMethods = AttributeUtils.FindMethodsWithAttribute(
                targetClass,
                typeof(ServiceActivatorAttribute),
                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            foreach (var method in targetMethods)
            {
                services.AddServiceActivator(method, targetClass);
            }

            if (targetMethods.Count > 0)
            {
                services.TryAddSingleton(targetClass);
            }

            return(services);
        }