montaggio finalePossibili effetti collaterali sgradevoli di ingannare .Net di avere parametri ref opzionali per COM
ho più accuratamente testati la "funzione" e scritto un articolo completo su di esso: Optional passed by reference parameters with C# for VBA COM APIs
Qualsiasi commento è benvenuto.
Per qualsiasi motivo in C# un metodo non può avere opzionalepassati per riferimento (contrassegnati con ref
o out
) parametri.
Ma in altre infrastrutture come VBA, VB6 o COM questo è possibile.
Quando colmare C# con VBA utilizzando COM Ho trovato un modo per superare la limitazione # C contrassegnando i parametri ref
come [Optional]
che è AFAIK ciò il C# compilatore genera alla fine del suo impianto idraulico.
void SomeDotNetCSMethod([Optional] ref someParameter)
Questo sembra funzionare come un fascino: quando si chiama VBA per C# posso omettere i parametri ref
e, naturalmente, posso leggere e cambiarle dal/C# .Net lato.
Ma come non ho trovato alcuna scritta su questo mi piacerebbe essere sicuro che non ci sono effetti collaterali negativi con questo "trucco".
ne conosci? Riesci a immaginarne uno?
EDIT
Con attributo [DefaultParameterValue]
potrei aver trovato un modo per avere VBA vedere i valori di default per il parametro, ma solo per alcuni tipi.
Farò altri esami per confermare questa funziona come previsto ...
Cosa c'è di sbagliato con il solo sovraccarico della funzione? – Comintern
@Comintern Grazie per la risposta, ma COM non supporta il sovraccarico. Se sovraccarichi in C# terminerai con 'SomeDotNetCSMethod_1',' SomeDotNetCSMethod_2' ... – Pragmateek