using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MongoDB.Bson.Serialization.Attributes; namespace Wabbajack.CacheServer.DTOs.JobQueue { public abstract class AJobPayload { public static List KnownSubTypes = new List {typeof(IndexJob)}; public static Dictionary TypeToName { get; set; } public static Dictionary NameToType { get; set; } [BsonIgnore] public abstract string Description { get; } public virtual bool UsesNexus { get; } = false; public abstract JobResult Execute(); static AJobPayload() { NameToType = KnownSubTypes.ToDictionary(t => t.FullName.Substring(t.Namespace.Length + 1), t => t); TypeToName = NameToType.ToDictionary(k => k.Value, k => k.Key); } } }