From b100dfbb64644537f9071e008e39da3cf8d90545 Mon Sep 17 00:00:00 2001 From: Matthias Koch Date: Tue, 3 Dec 2024 02:52:19 +0100 Subject: [PATCH] feat(tooling): resolve most derived task type --- source/Nuke.Tooling/ToolTasks.Run.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/Nuke.Tooling/ToolTasks.Run.cs b/source/Nuke.Tooling/ToolTasks.Run.cs index ccbb4ab8a..42b5ab6b8 100644 --- a/source/Nuke.Tooling/ToolTasks.Run.cs +++ b/source/Nuke.Tooling/ToolTasks.Run.cs @@ -99,4 +99,14 @@ protected virtual IProcess StartProcess( logger, outputFilter); } + + public static T Resolve() + where T : ToolTasks + { + var applicableTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()) + .Where(x => x.IsAssignableTo(typeof(T))) + .OrderByDescending(x => x.Descendants(x => x.BaseType).Count()); + var mostDerivedType = applicableTypes.First(); + return mostDerivedType.CreateInstance(); + } }