title: Guidelines for writing a framework
body: <p>I'm faced with writing a framework to simplify working with a large and complex object library (<a href="http://resources.esri.com/help/9.3/ArcGISDesktop/ArcObjects/ao_start.htm" rel="noreferrer">ArcObjects</a>). What guidelines would you suggest for creating a framework of this kind? Are static methods preferred? How do you handle things like logging? How do you future proof your framework code from changes that a vendor might introduce?</p>
  
  <p>I think of all of the various wrappers and helpers I've seen for NHibernate, log4net, and code I've read from projects like NLog and <a href="http://code.google.com/p/nettopologysuite/" rel="noreferrer" title="NetTopologySuite">NetTopologySuite</a> and I see so many good approaches, but honestly I'm at a loss where to start.</p>
  
  <p>BTW - I'm working in C# 3.5 but it's more about recommended approach rather than language.</p>