Я думаю, вам нужно сделать следующее:
public interface IQueue<T> where T : IItem
{
}
public class MyQueue<T> : IQueue<T>
where T : IItem
{
}
Потому что вы говорите: координатор получает IQueue, но вы пытаетесь создать MyQueue с более конкретной информацией.
Используя уже обсужденный Activator
, вы можете сделать это без ошибок компилятора:
class Coordinator <T,K>
where T : IQueue<K>
where K : IItem
{
private T collection = (T)Activator.CreateInstance(typeof(T));
}