Domanda

È possibile chiamare un metodo .NET da PowerShell con associazione anticipata?

Ho uno script della pipeline che chiama un singolo metodo .NET nel processo {...} . PowerShell chiama questo metodo tramite reflection, e in questo momento Invoke (non il metodo stesso, solo la chiamata di reflection) richiede il 70% del tempo totale di esecuzione.

Il metodo è sempre lo stesso, quindi preferirei chiedere a PowerShell di non usare affatto reflection.

È stato utile?

Soluzione

Credo che i soli tipi di chiamata di metodo che sono associati anticipatamente in PowerShell, o almeno il più presto possibile in un linguaggio dinamico, sono i seguenti

  1. Cmdlet.
  2. Metodi statici

Non sono sicuro del numero 2. Credo che debbano ancora usare la riflessione per arrivare al metodo sottostante.

CmdLets è probabilmente la scelta migliore qui. In tal caso, la chiamata effettiva viene associata anticipatamente, ma i parametri devono comunque essere sottoposti a un processo di conversione. Prova a spostare la tua chiamata del metodo in un CmdLet e ??vedi se questo ti aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top