In C# 4, quando derivano da DynamicObject e Overridding TryInvokeMember, come è possibile determinare se i parametri forniti nel sito di chiamata sono stati trasferiti con o senza semantica? Riesco a vedere alcuni campi privati nel raccoglitore fornito che contengono queste informazioni (vale a dire la proprietà Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder.ArgumentInfo) ma sembra inaccessibile. Presumo che queste informazioni debbano essere disponibili da qualche parte altrimenti limiterebbero seriamente la propria conoscenza dell'input fornito.C# 4: Determinazione della semantica di passaggio dei parametri nelle chiamate dinamiche
5
A
risposta
2
Ho parlato con il team DLR di questo. Sfortunatamente, la risposta è no, questa informazione non è disponibile per DynamicObject.
Il motivo è che i parametri di rif/out sono specifici per C#. E gli oggetti dinamici possono essere condivisi tra molte lingue e non tutte le lingue hanno queste notazioni. DynamicObject è "call-by-value", quindi i tuoi oggetti possono essere utilizzati da API diverse.
Grazie per l'aiuto. Sospettavo che non sarebbe stato possibile. –