public static void Main()
Console.WriteLine("Hello World");
var commandImplementations = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsAssignableFrom(typeof(BaseCommand<>)));
foreach (var i in commandImplementations)
Console.WriteLine("doot");
public interface BaseCommand<T> {}
public class ListCommandOptions {}
public class ListCommand : BaseCommand<ListCommandOptions> {}