Pues eso… que estaba haciendo la prueba de usar Activator sin indicar el tipo al que quiero convertir una cadena y me daba error indicando que: "one or more types required to compile a dynamic expression cannot be found" y claro, ni idea… ya que suponía que eso de usar dynamic en C# era así, simplemente indicando que el tipo es dynamic y ya está. Pero no, debes tener una referencia a Microsoft.CSharp:
De paso, te pongo el ejemplo de cómo instanciar una clase desde el contenido de una cadena, pero sin tener que hacer la conversión (o cast) a un tipo concreto.
Este ejemplo es una especie de ampliación de Crear un objeto a partir de una cadena con Activator.CreateInstance
private static void crearClase(string laClase) { var todoBien = true; dynamic obj = null; Type elTipo = Type.GetType(laClase); try { obj = Activator.CreateInstance(elTipo); if (obj != null) { obj.Nombre = "Pepe"; obj.Email = "pepe@outlook.com"; Console.WriteLine("Objeto creado correctamente: {0}{1}{2}, {3}", obj.GetType().Name, "\r\n", obj.Nombre, obj.Email); } } catch (Exception ex) { Console.WriteLine("ERROR: " + ex.Message); todoBien = false; } if (!todoBien) { Console.WriteLine("Parece que el tipo: {0} no es del tipo adecuado.", laClase); } Console.WriteLine(); }
Espero que te sea de utilidad.
Nos vemos.
Guillermo
…