title: IEnumerable versus List in a concrete class implementation
body: <p>I am writing a class library for financial modeling.  </p>
  
  <p>I want to define the models using interfaces to create abstraction for testing, and the possible later addition of new concrete classes.</p>
  
  <p>I am struggling on how to define lists of things, so I can later add to those lists in the concrete class.</p>
  
  <p>For example, if I define an interface as having a list of expenses in my Model called</p>
  
  <p>IEnumerable Expenses {get; set;} </p>
  
  <p>and later want to create a concrete class called ABCModel with a list of concrete XYZExpense in it, what would be the best way to implement the lists so I can easily add more items to the list?</p>
  
  <p>I cannot cast the List as a IEnumerable.</p>
  
  <p>So for example: </p>
  
  <pre><code> public interface IFinancialModel
  {
      IEnumerable&lt;IExpense&gt; Expenses { get; }
      IEnumerable&lt;IRevenue&gt; Revenue { get; }
      IEnumerable&lt;IAsset&gt; Assets { get; }
      IEnumerable&lt;ILiability&gt; Liabilities { get; }
  }
  </code></pre>
  
  <p>I need a concrete class called     public class FinancialModel : IFinancialModel</p>
  
  <p>and be able to add concrete items.  </p>
  
  <p>Should I create 'Add' methods of my own?  Ideally I would like to leverage built in List functionality and not reinvent the wheel.</p>