using Speckle.Objects; using Speckle.Objects.Geometry; using Speckle.Sdk.Models; namespace Speckle.Converters.Common; // POC: This object was created with the purpose of defining a specific subtype of base type the fallback conversion. // This will never be serialised and is just used to provide a type to register as the fallback conversion. // We did this because providing a conversion from List seemed too generic and potentially conflicting. // This also allows us to treat any implementation of IDisplayValue without caring about it's specific T type. public sealed class DisplayableObject : Base, IDisplayValue> { public DisplayableObject(IReadOnlyList displayValue) { var invalidGeometry = displayValue.FirstOrDefault(b => b is not (Line or Polyline or Mesh or Arc or Point)); if (invalidGeometry != null) { throw new ArgumentException( $"Displayable objects should only contain simple geometries (lines, polylines, meshes) but contained {invalidGeometry}" ); } this.displayValue = displayValue; } public IReadOnlyList displayValue { get; } }