public int GetHashCode([DisallowNull] GeometryModel obj) { return(obj switch { GeometryLineModel line => HashCode.Combine(line.GeometryType, line.X1, line.Y1, line.X2, line.Y2), GeometryCircleModel circle => HashCode.Combine(circle.GeometryType, circle.R, circle.X, circle.Y), _ => throw new ArgumentException(nameof(obj)), });
// GeometryModelからPOSTデータを作成 private static FormUrlEncodedContent GetContent(GeometryModel geometry) { var nameValues = geometry switch { GeometryLineModel line => new Dictionary <string, string> { { nameof(GeometryModel.GeometryType), line.GeometryType.ToString() }, { nameof(GeometryLineModel.X1), line.X1.ToString() }, { nameof(GeometryLineModel.Y1), line.Y1.ToString() }, { nameof(GeometryLineModel.X2), line.X2.ToString() }, { nameof(GeometryLineModel.Y2), line.Y2.ToString() }, }, GeometryCircleModel circle => new Dictionary <string, string> { { nameof(GeometryModel.GeometryType), circle.GeometryType.ToString() }, { nameof(GeometryCircleModel.R), circle.R.ToString() }, { nameof(GeometryCircleModel.X), circle.X.ToString() }, { nameof(GeometryCircleModel.Y), circle.Y.ToString() }, }, _ => throw new ArgumentException(nameof(geometry)), }; return(new FormUrlEncodedContent(nameValues)); }