Перейти к основному содержанию
Toolshed можно свободно вызывать из scsi с помощью функций object? tsh(string toolshedCommand), T tsh<T>(string toolshedCommand) и TOut tsh<TIn, TOut>(TIn value, string toolshedCommand). Кроме того, в интерактивном контексте можно вызывать любые функции IInvocationContext, такие как ReadVar, WriteVar и т.д., поскольку контекст реализует IInvocationContext.
Переменные Toolshed в csi и scsi не являются общими с консолью разработки — это разные контексты. Toolshed в C#-скриптинге может вызывать все команды независимо от разрешений, как серверная консоль. Возможно, потребуется вручную инициализировать Toolshed на клиенте, вызвав ToolshedManager.Initialize(), если вы используете csi.

Семантика вызова Toolshed

Команды Toolshed автоматически получают предоставленное начальное значение как “переданное через pipe”, то есть первая команда должна соответствовать начальному значению. Если начальное значение не предоставлено, его тип — [none], что соответствует обычной семантике консоли разработки. Если значение предоставлено, Toolshed ожидает, что первая команда будет соответствовать сигнатуре TIn -> ???, где TIn — это тип предоставленного значения или его downcast.

Тип выражения Toolshed и реальный тип

Как вы могли догадаться, возвращаемое значение вызова команды toolshed не обязательно является фактическим типом возвращаемого значения; это часто интерфейс или другой высокоуровневый тип, который сам по себе не конструируем. Нет никаких гарантий относительно базового типа, и не следует делать предположений о нём.
Последнее изменение 21 июня 2026 г.