protected internal IJob GetJob(JobInfoPayload info)
    {
        var assembly     = Assembly.LoadFrom(info.JobClassName + @"\" + info.JobClassName + ".dll");
        var assemblyType = assembly.GetType(info.AssemblyName);
        var job          = Activator.CreateInstance(assemblyType) as IJob;

        if (job == null)
        {
            throw new Exception("Unable to create job: " + info.JobClassName);
        }
        return(job);
    }
    protected internal void SetupInstance(JobInfoPayload info)
    {
        var ads = new AppDomainSetup
        {
            ApplicationBase          = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName,
            DisallowBindingRedirects = false,
            DisallowCodeDownload     = true,
            PrivateBinPath           = info.JobClassName,
            ApplicationName          = info.JobName,
        };

        JobAppDomain = AppDomain.CreateDomain(info.JobName, null, ads);
        JobHandler   = (BaseHandler)JobAppDomain.CreateInstanceAndUnwrap(typeof(BaseHandler).Assembly.FullName, typeof(BaseHandler).FullName);
    }