Criando um objeto a partir de um ID (ou nome)

Eu tenho uma classe abstrata que muitas classes filhas herdam:

  public abstract class CrawlerBase
    {
        public abstract void Process(string url);
    }

Eu estou trabalhando nesse loop:

foreach (var item in result)
                {
                    object crawler = null;

                    switch (item.Type)
                    {
                        case "Trials":
                            var t = new Trials(); 
                            ct.Process(item.URL); //repetitive code.  
                            break;

                        case "Coverage":
                            var c = new Coverage();
                            c.Process(item.URL); //repetitive code.
                            break;
                        default:
                            break;
                    }

                   // crawler.Process(item.URL);
                }

Agora a string item.type dependerá de qual classe filha precisa ser instanciada. Como todas as minhas classes filho herdam minha classe base, seria muito repetitivo chamar .Process () em cada instrução de caso. Eu quero converter o objeto "crawler" para a classe filha sendo instanciado e chamar o crawler.Process () no final da instrução switch, como mostrado nos comentários. Como posso fazer isso?

questionAnswers(5)

yourAnswerToTheQuestion