Prima di .NET 4.0, VB.NET aveva un leggero vantaggio su C # quando chiamava il codice di interoperabilità COM. Ciò era particolarmente vero per il codice, come il modello di programmabilità di Office che, come osserva mortalapeman, fa uso del supporto di COM per i parametri opzionali. Questa API spesso esponeva metodi con 10, 15 o più parametri (ugh!), Che erano tutti ref
param, che in C # dovevano essere specificati come riferimenti a Missing.Value
. Questo è stato un dolore.
È importante notare, tuttavia, che mentre questo era comune quando si chiamava il codice di Office, non l'ho mai incontrato da nessun'altra parte. La maggior parte delle API COM con cui ho lavorato erano molto più semplici e potevano essere chiamate da C # con poco fastidio.
Tuttavia, in .NET 4.0, anche questo piccolo problema è stato corretto. Per le API COM generiche, è possibile utilizzare la parola chiave dynamic
per chiamare il codice tardivo senza che il normale tipo di controllo C di solito richieda e quindi chiamare le API COM senza intoppi. Controlla questo articolo sugli usi generali di dynamic
, e questo in particolare per lavorare con gli oggetti COM.
Se stai pensando di usarlo per interoperare con i componenti di Office, C # 4.0 offre una soluzione ancora più semplice. Dai un'occhiata a questo articolo MSDN su Parametri facoltativi di Office :
Visual C# enables you to omit optional ref parameters only for methods of interfaces, not classes.
[...]
If you want to write code that omits optional ref parameters of a method in the ThisDocument class, you can alternatively call the same method on the Microsoft.Office.Interop.Word.Document object returned by the InnerObject property, and omit the parameters from that method. You can do this because Microsoft.Office.Interop.Word.Document is an interface, rather than a class.
Quindi, invece di chiamare myWordDoc.CheckSpelling()
con 12 (count'em, 12!) parametri facoltativi inutili, puoi chiamare myWordDoc.InnerObject.CheckSpelling(IgnoreUpperCase: true)
, pulito e pulito.