Since in **C#**, we can only inherit from a single base class and implement multiple interfaces.

I see this normal pattern everywhere:-

`DerivedClass : BaseClass, IInterface1, IInterface2`

How should one decide what goes inside BaseClass and what things inside the interfaces?

Are there any guidelines for it?