2010-07-14 1 views
10

Come si crea un oggetto dinamico COM/OLE/ActiveX in C# 4.0 da un identificatore di programma o ProgID (come "Word.Application") senza fare riferimento a una libreria?equivalente a CreateObject per C# 4, parola chiave dinamica e associazione tardiva?

In C# 3.5 che avrei dovuto scrivere qualcosa di simile

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

C'è un modo più semplice per farlo in C# 4.0 in modo da poter assegnare ad una variabile di tipo dinamico (utilizzando la parola chiave dynamic) ?

risposta

14

Cosa c'è di sbagliato con

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

?

Se si tratta di un nome di tipo noto, c'è anche

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

funziona molto bene (Qualsiasi CPU troppo). Grazie. – harveyt