Esempio n. 1
0
        public Job CreateJob(double timeIn, JobArrivalType arrivalTypeIn)
        {
            int        batchSize = 0;
            double     dueDate   = 0;
            JobManager manager   = ((JobManager)((JobMix)this.Parent).Parent);

            if (arrivalTypeIn == JobArrivalType.TraceBased)
            {
                batchSize = manager.BatchList[0];
                manager.BatchList.RemoveAt(0);
                dueDate = manager.GenerateDueDate(this);
            }
            else
            {
                batchSize = (int)this.batch.GenerateValue();
                dueDate   = manager.GenerateDueDate(this);
            }
            Statistics submitted = this.Statistics["Submitted"];

            submitted.UpdateCount(timeIn, +1);
            Job job = new Job(String.Format("{0}{1} ({2})", this.Name, submitted.Count, Guid.NewGuid()), this.Parent, timeIn, batchSize, dueDate, this);

            this.jobs.Add(job);
            return(job);
        }
Esempio n. 2
0
        public static IJobGenerator GetJobGenerator(JobArrivalType arrivalType)
        {
            // get the type of the interface
            var type = typeof(IJobGenerator);
            // query all the classes that implement IMyInterface in current assembly
            // startTime.IsClass is very important, otherwise you will get more interface types
            // that inherited IMyInterface, include IMyInterface itself
            var q = from t in Assembly.GetExecutingAssembly().GetTypes()
                    where t.IsClass && type.IsAssignableFrom(t)
                    select t;
            // convert the query result to list (List<type>)
            var classes = q.ToList();
            // find the one we need
               // var myClass = classes.FirstOrDefault(c => c.Name.ToLower().Contains(arrivalType.ToString().ToLower()));

            var myClass = classes.FirstOrDefault(c => c.Name.Equals(arrivalType + "JobGenerator"));
            // create an instance from a type
            var instance = (IJobGenerator)Activator.CreateInstance(myClass);
            // return the created instance
            return instance;
        }