I don't know if I fully understand your question, but in general your queue processor needs access to some sort of factory for processing those objects. The most convenient approach would be if your queue consist of messages/commands (DTOs) and you have some sort of abstraction over command handling logic, such as ICommandHandler<TCommand>
.
In that case your queue processor might look like this:
private readonly ICommandHandlerFactory factory;
public void Process(IEnumerable<object> commandQueue)
{
foreach (object command in commandQueue)
{
dynamic handler = this.factory.CreateHandlerFor(command.GetType());
handler.Handle((dynamic)command);
}
}