Я не уверен, в чем твоя проблема.Но (для меня) звучит так, будто вы хотите, чтобы контейнерный класс управлял двумя различными структурами данных.
class MyContainerClass<T> : IContainer
{
private List<T> list;
private Queue<T> queue ;
public MyContainerClass(){
list = new List<T>();
queue = new Queue<T>();
}
public virtual void Add(T value){
//Logic for handling add
list.Add(value);
queue.Enqueue(value);
}
public virtual void Remove(T value)
{
//Logic for handling remove
}
//Etc
}