LSP Principle -- if D is a subtype of B, then objects of type B in a program may be replaced with objects of type D without altering any of the desirable properties of that program.
for eg:
Derived d = new Derived();
Base b = new Base();
//as per the principle, the below code should work
b = new Derived();
b = d;
.Net framework takes care of this. As a developer I don't have anything to do with this. Then what is the use of defining such principle?