using System.Reflection; using dotnetCampus.ApplicationStartupManager; using dotnetCampus.Telescope; namespace WPFDemo.Api.StartupTaskFramework { public class AssemblyMetadataExporter { public AssemblyMetadataExporter(Assembly[] assemblies) { _assemblies = assemblies; } public IEnumerable ExportStartupTasks() { var collection = Export(); return collection.Select(x => new StartupTaskMetadata(x.RealType.Name.Replace("Startup", ""), x.CreateInstance) { Scheduler = x.Attribute.Scheduler, BeforeTasks = x.Attribute.BeforeTasks, AfterTasks = x.Attribute.AfterTasks, //Categories = x.Attribute.Categories, CriticalLevel = x.Attribute.CriticalLevel, }); } public IEnumerable> Export() where TAttribute : Attribute { return AttributedTypes.FromAssembly(_assemblies); } private readonly Assembly[] _assemblies; } }