I am using StructureMap as my IoC tool for Dependency Injection. I also use a generic contract for my repositories: IRepository<T>. When configuring StructureMap to use generic types, it must be done using the non-generic overload of the Registry.ForRequestedType method: public class MainRegistry : Registry
{
protected override void configure()
{
. . .
ForRequestedType (typeof (IRepository<>))
.TheDefaultIsConcreteType (typeof (NHibernateRepository<>));
. ....