C # Winform carrega dinamicamente usercontrols pelo nome

Eu quero saber se é possível carregar dinamicamente controles de usuário?
Este é um código para mostrar o que quero dizer:

public void Load()
        {

            Reset();

            if (_host.User == null)
                return;

            int _count = 0;

            String[] _applications = _host.User.Applications;

            if (_applications == null)
                return;

            foreach (String _application in _applications)
            {

                TabPage _page = null;

                switch (_application)
                {
                    case "SF01":

                        _page = new TabPage();
                        _page.Text = "SF01";
                        _page.Controls.Add(new SF01(_container));

                        break;
                }

                if (_page != null)
                {

                    tapplications.TabPages.Add(_page);
                    m_list.Add(_count, _page);
                    _count++;

                }

            }

            tapplications.TabPages.Add(tlog);

            if (_host.User.Admin)
                tapplications.TabPages.Add(tadmin);

            _container.Controls.Add(this);

        }

Como você pode verSF01 é meu usercontrol.
Agora, como faço para carregar outros usercontrols pelo nome em vez de digitar com força o objeto de classe?
Dessa forma, posso criar mais aplicativos e esquecer como carregá-los. (case "SF01":)

Todos os aplicativos residirão abaixo de uma pasta de projetoapplications, talvez haja uma maneira de percorrer a pasta do projeto?

questionAnswers(2)

yourAnswerToTheQuestion