¿Puedo alojar automáticamente todos los servicios en app.config cuando uso SelfHosting?

Estoy escribiendo una aplicación que necesita alojar varios servicios WCF. Una de las fortalezas de WCF es la capacidad de configurar servicios sin tener que volver a compilar, especificando la configuración en el archivo app.config.

Al autohospedaje, no parece haber una forma inmediata de alojar automáticamente los servicios que se encuentran en el archivo app.config. Encontréesta pregunt que menciona una posible solución de enumerar dinámicamente los servicios enumerados en app.config en tiempo de ejecución y crear un ServiceHost para cada uno.

Sin embargo, mis servicios, contratos y la aplicación de alojamiento están en diferentes ensamblados. Esto causaType.GetType(string name) to no puede localizar mi tipo de servicio (devuelvenull) porque se define en un ensamblaje diferente.

¿Cómo puedo alojar de manera confiable todos los servicios enumerados en el archivo app.config dinámicamente (es decir, sin codificación rígidanew ServiceHost(typeof(MyService)) en mi aplicación de alojamiento propio?

Nota: Mi app.config se generó utilizando el "Editor de configuración WCF" en Visual Studio 2010.

Nota también: mi objetivo principal es que esto sea impulsado por el archivo app.config para que haya un único punto de configuración. No quiero tener que configurar esto en una ubicación separada.

EDITA: Puedo leer el archivo app.config (veraqu), pero necesita poder resolver tipos en diferentes ensamblajes.

EDITA: Una de las respuestas a continuación me incitó a intentar especificar el AssemblyQualifiedName en app.config en lugar de solo el nombre de tipo básico. Esto fue capaz de sortear elType.GetType() problema, sin embargoServiceHost.Open() ahora falla con unaInvalidOperationException independientemente de cómo alcance el tipo:

// Fails
string typeName = typeof(MyService).AssemblyQualifiedName;
Type myType = Type.GetType(typeName);
ServiceHost host = new ServiceHost(myType);
host.Open(); // throws InvalidOperationException

// Also fails
Type myType2 = typeof(MyService);
ServiceHost host2 = new ServiceHost(myType2);
host2.Open(); // throws InvalidOperationException

Detalles de excepción:

Service 'SO.Example.MyService' has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element.

Supongo que WCF intenta hacer coincidir la cadena literal del nombre del servicio al analizar internamente el archivo app.config.

EDITAR / RESPONDER: Lo que terminé haciendo fue básicamente lo que estaba en la respuesta a continuación. En lugar de usarType.GetType() Sé que todos mis servicios están en el mismo ensamblaje, así que cambié a:

// Get a reference to the assembly which contain all of the service implementations.
Assembly implementationAssembly = Assembly.GetAssembly(typeof(MyService));
...
// When loading the type for the service, load it from the implementing assembly.
Type implementation = implementationAssembly.GetType(serviceElement.Name);

Respuestas a la pregunta(3)

Su respuesta a la pregunta