Frage

Ist es möglich, eine .NET-Methode von Powershell mit dem frühen Bindung zu nennen?

Ich habe ein Pipeline-Skript, das eine einzige .NET-Methode in process {...} aufruft. Powershell ruft diese Methode durch Reflexion, und jetzt Invoke (nicht die Methode selbst, sondern nur Reflexion Call) hat 70% der gesamten Ausführungszeit.

Die Methode ist immer das gleiche, so würde ich es vorziehen, Powershell zu fragen, nicht Reflektion zu verwenden überhaupt.

War es hilfreich?

Lösung

Ich glaube, die einzigen Arten von Methodenaufruf, die früh in Powershell gebunden ist, oder zumindest so früh gebunden, wie in einer dynamischen Sprache möglich ist, sind die folgend

  1. Cmdlets.
  2. Statische Methoden

Ich bin nicht so sicher # 2. Ich glaube, sie haben immer noch Reflektion verwenden, um die zugrunde liegende Methode zu erhalten.

Cmdlets sind die bessere Wahl hier wahrscheinlich. In diesem Fall wird der eigentliche Anruf gebunden zu früh, aber die Parameter müssen noch einen Umwandlungsprozess unterzogen werden. Versuchen Sie, Ihren Methodenaufruf in eine CmdLet bewegen und zu sehen, ob das hilft Ihnen heraus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top