using System.Collections.Generic;
namespace DisplayShapeInfo
int CalculatePerimeter();
public class Rectangle : IShape
private int[] _dimensions;
public Rectangle(int[] dimensions)
_dimensions = dimensions;
public int CalculatePerimeter() => 2 * (_dimensions[0] + _dimensions[1]);
public int SideCount => _dimensions.Length;
public class Square : IShape
private int[] _dimensions;
public Square(int[] dimensions)
_dimensions = dimensions;
public int CalculatePerimeter() => 4 * _dimensions[0];
public int SideCount => _dimensions.Length;
static void Main(string[] args)
List<IShape> shapes = new List<IShape>()
ShapeFactory.CreateShape(ShapeType.Rectangle, new[] {4, 7}),
ShapeFactory.CreateShape(ShapeType.Square, new[] {3}),
ShapeFactory.CreateShape(ShapeType.Triangle, new[] {5, 2, 6})
foreach (var shape in shapes)
Console.WriteLine($"Perimeter for this {shape.GetType().Name} = {shape.CalculatePerimeter()}");
catch (ArgumentException ex)
Console.WriteLine($"Error: {ex.Message}");