26

Sep

CreateObject in C#: come creare e istanziare un componente COM in C# senza aggiungerlo come riferimento

Ciao a tutti

 

tutti i VB dalle antiche versioni pre .NET fino alle attuali versioni supportano il CreateObject con cui è possibile utilizzare un componente COM senza doverlo per forza pre-referenziare con l’Interop, etc….

 

E’ uno scenario d’uso molto utile ad esempio per automatizzare Office, Acrobat, e quant’altro

Da C# sfortunatamente non è possibile usare un metodo simile in modo nativo, ma è possibile comunque farlo aggiungendo il riferimento all’assembly del VisualBasic:

 

 

1) Nel nostro progetto C# aggiungiamo il riferimento all’assembly Microsoft.VisualBasic tra gli assembly .NET

image

 

2) Nel codice utilizziamo la classe Interaction per utilizzare i tipici costrutti VB:

dynamic word = Microsoft.VisualBasic.Interaction.CreateObject("Word.Application");
word.Visible = true;

 

Questo esempio avvia Word (se installato) sul proprio PC da una propria applicazione .NET

 

L’uso della parola chiave “dynamic” ci consente di scrivere direttamente qualunque cosa lasciando all’interprete l’associazione del comando in ottica di late-binding

 

a presto

by Antonio Esposito on 9/26/2012