2010-07-14 21 views
10

¿Cómo creo un objeto COM/OLE/ActiveX dinámico en C# 4.0 desde un identificador de programa o ProgID (como "Aplicación.WEB") sin hacer referencia a una biblioteca?¿CreateObject equivalente para C# 4, palabra clave dinámica y enlace tardío?

En C# 3.5 tendría que escribir algo como

Type comObjectType = Type.GetTypeFromProgID(progId, true); 
Activator.CreateInstance(comObjectType); 

¿Hay una manera más fácil de hacerlo en C# 4.0, así que puede asignar a una variable de tipo dinámico (usando la palabra clave dinámica) ?

Respuesta

14

¿Qué hay de malo en

dynamic myTypeInstance = Activator.CreateInstance(Type.GetTypeFromProgID(typeName, true)); 

?

Si se trata de un nombre de tipo conocido, también hay

dynamic myTypeInstance = Activator.CreateInstance("typeName", "assemblyName"); 
+0

funciona muy bien (Cualquier CPU también). Gracias. – harveyt

Cuestiones relacionadas