private void Method3(IServiceProvider serviceProvider, TestService1 service1)
            {
                if (service1 is null)
                {
                    throw new ArgumentNullException(nameof(service1));
                }

                if (service1.Called)
                {
                    throw new InvalidOperationException("Invalid method called!");
                }

                service1.Called  = true;
                service1.Success = false;

                serviceProvider.Call(this, nameof(Method3), allowPrivate: true);
            }
 public static T Call <T>(this IServiceProvider services, object obj, string name, bool allowPrivate = false)
 {
     return((T?)services.Call(obj, name, returnType: typeof(T), allowPrivate: allowPrivate));
 }
        public static object?Call(this IServiceProvider services, object obj, string name, Type?returnType = null, bool allowPrivate = false)
        {
            MethodInfo?cached = null;

            return(services.Call(ref cached, obj, name, returnType: returnType, allowPrivate: allowPrivate));
        }