title: Simple injector and internal constructors
body: <p>I am working on a small class library and using Simple Injector for my DI.
  The class library has an access point (some sort of a service I guess) which is <code>public</code> and it has some <code>internal</code>  services and repositories. </p>
  
  <p>I saw that Simple Injector does not support constructor injection with internal constructors.
  For example, my product service looks like:</p>
  
  <pre><code>     internal class ProductService : IProductService
        {
          private IProductRepository _productRepository;
  
          internal ProductService(IProductRepository repository)
          {
            if (repository == null) throw new ArgumentNullException("repository");
  
            _productRepository = repository;
          }
  
        }
  </code></pre>
  
  <p>And my setup:</p>
  
  <pre><code>container.Register&lt;IProductService, ProductService&gt;();
  container.Register&lt;IProductRepository&gt;(() =&gt; new ProductRepository());
  </code></pre>
  
  <p>When I run the code, I get the following exception:</p>
  
  <pre><code>For the container to be able to create ProductService, it should contain exactly one public constructor, but it has 0.
  </code></pre>
  
  <p>My questions:</p>
  
  <p>1) Is there a specific reason that injecting internal classes doesn't work in terms of architecture/design?</p>
  
  <p>2) How is this behavior (using dependency injection with classes that should not be public) achieved and is it desired?</p>