using Microsoft.Extensions.DependencyInjection;
using System.Collections.Generic;
private static List<BaseScript> ListOfScrpits { get; set; }
static void Main(string[] args)
System.Reflection.Assembly[] assemblies = new[] { System.Reflection.Assembly.GetExecutingAssembly() };
IEnumerable<Type> scriptTypes = assemblies
.SelectMany(a => a.GetTypes())
.Where(t => t != typeof(BaseScript) && typeof(BaseScript).IsAssignableFrom(t) && !t.IsAbstract);
ServiceCollection serviceCollection = new ServiceCollection();
foreach (Type scriptType in scriptTypes)
serviceCollection.AddTransient(typeof(BaseScript), scriptType);
ServiceProvider serviceProvider = serviceCollection.BuildServiceProvider();
ListOfScrpits = serviceProvider.GetServices<BaseScript>().ToList();
foreach (BaseScript script in ListOfScrpits)
Console.WriteLine(script.GetType().Name);
public abstract class BaseScript { }
public class DoThis : BaseScript { }
public class DoThat : BaseScript { }
public class DoSomethingElse : BaseScript { }