title: inheritance design patterns
body: <p>I'm writing a program where each component has an inheritance structure has three levels... ui, logic, and data... where each of these levels has an interface of defined functionality that all components must implement.  Each of these levels also has some functionality that could be written generically for the whole interface, rather than repeatedly for each component.</p>
  
  <p>In my mind, the best approach would be an abstract class in between the interface and the component implementation that does all the generic functionality (as in the linked <a href="http://www.freeimagehosting.net/image.php?82759d7c7e.png" rel="nofollow noreferrer">class diagram here</a>)... but the inheritance rules for C# only let me have the multiple inheritance from unimplemented interfaces.  What would be a best practices design to achieve this type of behavior?</p>