title: Unity RegisterType() Error: there is no implicit reference conversion
body: <p>I have a interface:</p>
  
  <pre><code>    public interface IFileRetriever&lt;THeader, TBody, TTailer&gt;
          where THeader : IFileRow
          where TBody : IFileRow
          where TTailer : IFileRow {
  
          IRetrievedFile&lt;THeader, TBody, TTailer&gt; Retrieve(string fileName); 
  }
  </code></pre>
  
  <p>And here is a sub class:</p>
  
  <pre><code>public class FileRetriever&lt;THeader, TBody, TTailer&gt; : IFileRetriever&lt;THeader, TBody, TTailer&gt;
      where THeader : IFileRow, new()
      where TBody : IFileRow, new()
      where TTailer : IFileRow, new()
  {
      private readonly IRetrievedFile&lt;THeader, TBody, TTailer&gt; retrievedFile;
  
      public FileRetriever(IRetrievedFile&lt;THeader, TBody, TTailer&gt; retrievedFile)
      {
          this.retrievedFile = retrievedFile;
      }
  
      public IRetrievedFile&lt;THeader, TBody, TTailer&gt; Retrieve(string fileName)
      {
          //do some thing
         return null;
      }
  }
  </code></pre>
  
  <p>When I try to Register it in Unity,</p>
  
  <pre><code>    container.RegisterType&lt;IFileRetriever&lt;IFileRow, IFileRow, IFileRow&gt;, FileRetriever&lt;ReturnCheckHeader, ReturnCheckBody, ReturnCheckTailer&gt;&gt;(
          new InjectionConstructor(
              new ResolvedParameter&lt;IRetrievedFile&lt;ReturnCheckHeader, ReturnCheckBody, ReturnCheckTailer&gt;&gt;()
          ));
  </code></pre>
  
  <p>ReturnCheckHeader,ReturnCheckBody,ReturnCheckTailer is a sub class of "IFileRow"</p>
  
  <p>I get an error:</p>
  
  <blockquote>
    <p>The type 'FileRetriever' cannot be used as type parameter 'TTo' in the
    generic type or method 'UnityContainerExtensions.RegisterType(IUnityContainer, params InjectionMember[])'. There is no implicit
    reference conversion from 'FileRetriever' to 'IFileRetriever'.</p>
  </blockquote>