public static IServiceCollection AddQuartz(this IServiceCollection services, QuartzProperties properties)
        {
            services.AddSingleton <IJobFactory, JobFactory>();
            services.AddSingleton(c => BuildScheduler(c, properties));

            return(services);
        }
        private static IScheduler BuildScheduler(IServiceProvider container, QuartzProperties properties)
        {
            var propsCollection = new NameValueCollection {
                [StdSchedulerFactory.PropertySchedulerInstanceName] = properties.InstanceName,
                [StdSchedulerFactory.PropertySchedulerInstanceId]   = $"{Environment.MachineName}-{Guid.NewGuid()}",
                [StdSchedulerFactory.PropertyJobStoreType]          = typeof(MongoDbJobStore).AssemblyQualifiedName,
                [$"{StdSchedulerFactory.PropertyJobStorePrefix}.{StdSchedulerFactory.PropertyDataSourceConnectionString}"] =
                    properties.StoreConnectionString,
                ["quartz.serializer.type"] = properties.SerializerType
            };

            var jobFactory = (IJobFactory)container.GetService(typeof(IJobFactory));
            var factory    = new SchedulerFactory(propsCollection, jobFactory);
            var scheduler  = factory.GetScheduler().Result;

            scheduler.JobFactory = jobFactory;
            //scheduler.Start();
            return(scheduler);
        }