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));
        }