Dependendo do que você está tentando fazer, é mais simples.
O IIS reiniciará automaticamente seu pool de aplicativos quando perceber que um arquivo foi alterado. Se tudo o que você deseja fazer é corrigir um servidor em execução, basta enviar uma nova dll e deixar o ciclo do pool de aplicativos.
Will this fail because I haven't unloaded the app domain that the original DLL from which the original type was loaded?
Se sua DLL antiga e sua nova DLL tiverem a mesma versão, tenho certeza de que elas farão coisas muito ruins. Embora eu ache que tipos com o mesmo nome totalmente qualificado, mas versões diferentes, seriam compatíveis, parece que não é o caso .
what am I missing?
Uma coisa a se preocupar é que o carregamento a partir da configuração tende a ser uma operação cara - uma que é armazenada em cache, seja pelo seu código ou por alguma API subjacente. Confiar na fábrica para ver o novo alvo é provavelmente uma fonte rápida e fácil de bugs sutis. Há também problemas de simultaneidade em que seu código pode assumir que chamadas consecutivas para Factory.Create
retornam o mesmo tipo de concreto.
Mas no final, isso se resumirá a Activator.CreateInstance
.