using System.Collections.Generic;
using CSharp_fundamental.SOLID.LSP;
public static void Main()
Console.WriteLine("Hello World");
namespace CSharp_fundamental.SOLID.LSP
public static class ViolatedLSP
public static void PrintArea()
var retangles = new List<Retangle>()
new Retangle() { Width=5,Height=10 },
new Square() {Width=5,Height=4 }
foreach (var retangle in retangles) {
var area= retangle.Area();
Console.WriteLine(retangle.GetType().ToString() + area);
public virtual int Width { get; set; }
public virtual int Height { get; set; }
public virtual float Area()
return this.Width * this.Height;
public class Square:Retangle
public override int Width { get { return _width; } set { _width = value; _height = _width; } }
public override int Height { get { return _height; } set { _height = value; _width =_height; } }
public override float Area()
return this.Width * this.Height;