In C#, when should you use interfaces and when should you use abstract classes? What can be the deciding factor?
The advantages of an abstract class are:
Interfaces are merely data passing contracts and do not have these features. However, they are typically more flexible as a type can only be derived from one class, but can implement any number of interfaces.