 <p>So I think I figured it out. It boils down to a chicken or egg scenario. When you register a generic class via the <code>RegisterGeneric</code> method, Autofac will <strong>not</strong> automatically register the closed types unless it detects them somewhere in your object graph as a dependency. </p> <p><strong>Ctor 1</strong> doesn't trigger closed generics to be registered:</p> <blockquote> <pre><code> public MessageHandlerFactory(IEnumerable&lt;IMessageHandler&gt; handlers){ } </code></pre> </blockquote> <p><strong>Ctor 2</strong> does trigger closed generics to be registered:</p> <pre><code> public MessageHandlerFactory(IEnumerable&lt;IMessageHandler&gt; handlers, MessageHandler&lt;ComplexMessage&gt; complexHandler, MessageHandler&lt;SimpleMessage&gt; simpleHandler ){} </code></pre> <p>Once I manually registered the closed generics using the code below, Autofac began injecting them as part of the <code>IEnumerable&lt;IMessageHandler&gt;</code> dependency seen on Ctor 1</p> <pre><code>builder.RegisterType(typeof(MessageHandler&lt;ComplexMessage&gt;)).AsImplementedInterfaces(); builder.RegisterType(typeof(MessageHandler&lt;SimpleMessage&gt;)).AsImplementedInterfaces(); </code></pre>