Skip to content

Commit b100dfb

Browse files
committed
feat(tooling): resolve most derived task type
1 parent 6bf2e19 commit b100dfb

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

source/Nuke.Tooling/ToolTasks.Run.cs

+10
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,14 @@ protected virtual IProcess StartProcess(
9999
logger,
100100
outputFilter);
101101
}
102+
103+
public static T Resolve<T>()
104+
where T : ToolTasks
105+
{
106+
var applicableTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes())
107+
.Where(x => x.IsAssignableTo(typeof(T)))
108+
.OrderByDescending(x => x.Descendants(x => x.BaseType).Count());
109+
var mostDerivedType = applicableTypes.First();
110+
return mostDerivedType.CreateInstance<T>();
111+
}
102112
}

0 commit comments

Comments
 (0)