title: NHibernate with Inversion of Control
body: <p>This is just something I've been thinking about and was wondering if it exists, or even if its beneficial at all. </p>
  
  <p>I'm doing inversion of control and dependency injection using Unity.  I'm also doing ORM with fluent nHibernate. I was wondering if there was a way to either configure nHibernate to take interfaces as its type parameters and do IoC for me, or what the best way to use them together would be.</p>
  
  <p>For instance, if I had a customer object using a repository pattern I would possibly have 2 interfaces (ICustomer, ICustomerRepository) as well as 2 concrete implementations (Customer, CustomerRepository). In the concrete CustomerRepository I would have to tie it directly to the Customer object in order to use nHIbernate.</p>
  
  <pre><code>public class CustomerRepository : ICustomerRepository
  {
      public ICustomer Retrieve(int id)
      {
          return _session.Get&lt;Customer&gt;(id);
      }
  }
  </code></pre>
  
  <p>Instead of passing "Customer" as a type parameter to the session, I think it would be cool to pass "ICustomer" and somehow have nHibernate configured to do the IoC. Is this even possible, or beneficial at all?</p>