namespace InABox.Logikal { public interface ILogikalPartsResponse where TFinish : ILogikalFinish where TProfile : ILogikalProfile where TComponent : ILogikalComponent where TGlass : ILogikalGlass where TLabour : ILogikalLabour { TFinish[] Finishes { get; set; } TProfile[] Profiles { get; set; } TComponent[] Components { get; set; } TGlass[] Glass { get; set; } TLabour[] Labour { get; set; } byte[] ExcelData { get; set; } } public abstract class AbstractLogikalPartsResponse : LogikalResponse, ILogikalPartsResponse where TFinish : ILogikalFinish where TProfile : ILogikalProfile where TComponent : ILogikalComponent where TGlass : ILogikalGlass where TLabour : ILogikalLabour { public TFinish[] Finishes { get; set; } public TProfile[] Profiles { get; set; } public TComponent[] Components { get; set; } public TGlass[] Glass { get; set; } public TLabour[] Labour { get; set; } public byte[] ExcelData { get; set; } public override string ToString() => $"{Finishes?.Length ?? 0} Finishes / {Profiles?.Length ?? 0} Profiles / {Components?.Length ?? 0} Components / {Glass?.Length ?? 0} Glass/ {Labour?.Length ?? 0} Activities found"; } }