Editor/Output/ArchExpectedReports.cs
namespace Sunless.Architecture;
public interface IArchExpectedReport {
ArchKind Kind { get; }
object Describe( object payload, ArchTarget target, ArchTool tool );
}
public static class ArchExpectedReports {
public static object Describe( ArchKind kind, object payload, ArchTarget target, ArchTool tool ) {
var report = Standing().FirstOrDefault( candidate => candidate.Kind == kind );
return report?.Describe( payload, target, tool );
}
static IEnumerable<IArchExpectedReport> Standing() {
yield return new ArchWallExpectedReport();
yield return new ArchRoofExpectedReport();
yield return new ArchStairExpectedReport();
}
}