Cannot convert generic type parameter
<p>I need to call a method that accepts an interface as a parameter.  The object I am using as a parameter implements the inteface however I still get a compile error.  What am I doing wrong?</p>

<pre><code>public class ViewModel 
{
    public ViewModel()
    {
        QueueManager&lt;CFMessage&lt;CFQueueItem&gt;, CFQueueItem&gt; q = new QueueManager&lt;CFMessage&lt;CFQueueItem&gt;, CFQueueItem&gt;();
        DoSomething(q);     // This line does not compile:  Cannot convert from QueueManager&lt;CFQueueItem&gt; to QueueManager&lt;IQueueItem&gt;
    }

    public void DoSomething(QueueManager&lt;IQueueMessage&lt;IQueueItem&gt;, IQueueItem&gt; queueManager)
    {

    }
}

public interface IQueueMessage&lt;T&gt; where T : IQueueItem
{
    int ID { get; set; }
}

public interface IQueueItem
{
    int ID { get; set; }
}

public class CFMessage&lt;CFQueueItem&gt; : IQueueMessage&lt;CFQueueItem&gt; where CFQueueItem : IQueueItem
{
    public int ID { get; set; }
}

public class CFQueueItem : IQueueItem
{
    public int ID { get; set; }
}

public class QueueManager&lt;T, Q&gt;
    where T : IQueueMessage&lt;Q&gt;
    where Q : IQueueItem
{

}
</code></pre>
