使用变量中存储的类型进行 PowerShell 类型转换

2023-12-10

我想将 .NET 对象转换为另一个 .NET 类型,但是:

  • 目标.NET类型(类)存储在变量中
  • 我不想使用-asPowerShell 运算符
  • 我正在使用复杂的非原始类型

你将如何实现这一目标?

例如,这是“PowerShell”的方式来做到这一点,但我不想使用-as:

$TargetType = [System.String]; # The type I want to cast to
1 -as $TargetType;             # Cast object as $TargetType

不幸的是,这不起作用:

$TargetType = [System.String];
[$TargetType]1;

..因为在这种情况下,PowerShell 不允许在方括号内使用变量。

我正在想象这样的事情:

$TargetType = [System.String];
$TargetType.Cast(1); # Does something like this exist in the .NET framework?

可以用.NET方法语法来完成吗?有没有静态方法可以做到这一点?


您可以使用以下方法粗略地模拟强制转换:

[System.Management.Automation.LanguagePrimitives]::ConvertTo($Value, $TargetType)

对于提供自己的转换的动态对象,真正的强制转换的行为可能与上述方法不同。否则,我能想到的唯一其他区别是性能 - 由于 ConvertTo 静态方法中不可用的优化,真正的强制转换可能会执行得更好。

要精确模拟强制转换,您需要生成一个脚本块,其中包含以下内容:

function GenerateCastScriptBlock
{
    param([type]$Type)

    [scriptblock]::Create('param($Value) [{0}]$Value' -f
        [Microsoft.PowerShell.ToStringCodeMethods]::Type($Type))
}

然后,您可以将此脚本块分配给函数或直接调用它,例如:

(& (GenerateCastScriptBlock ([int])) "42").GetType()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用变量中存储的类型进行 PowerShell 类型转换 的相关文章

随机推荐

  • 公式值的 Google 脚本返回 #N/A

    当我在脚本中读取时 F 列有一个公式值 显示 N A 下面是一个非常简单的脚本代码 但我无法理解为什么它显示 N A 我没有实现任何触发器 var spreadsheet SpreadsheetApp getActiveSpreadshee
  • .filter 中的 ES6 .filter

    所以我有如下数据 id 0 title happy dayys owner id 1 username dillonraphael tags value Art label Art items id 1 title happy dayys
  • 如何从 MS Word 中的行号获取文本

    是否可以使用办公自动化从 MS Word 中的给定行号获取文本 行或句子 我的意思是 如果我可以获得给定行号中的文本或作为该行一部分的句子本身 那就可以了 我没有提供任何代码 因为我完全不知道如何使用办公自动化阅读 MS Word 我可以像
  • 将字符串数组转换为整数数组

    所以基本上用户从扫描仪输入输入序列 12 3 4 etc 它可以是任意长度 并且必须是整数 我想将字符串输入转换为整数数组 so int 0 将会12 int 1 将会3 etc 有什么建议和想法吗 我正在考虑实施if charat i 获
  • GetWindowRect 在 Windows 10 中具有偏移量

    我在程序中使用 GetWindowRect 来获取桌面上窗口的坐标 这在我用于测试的十几台电脑 XP W8 1 上运行良好 但在我的一台带触摸屏的 W10 电脑上则不然 坐标向左上角有偏移 我在 google 上搜索了 Windows 10
  • 如果数据保持不变,有没有办法让同一个 SQL 查询得到不同的结果?

    当我运行这个查询时 我间歇性地得到一个不同的结果集 有时它给出 1363 个结果 有时给出 1365 个结果 有时给出 1366 个结果 数据没有改变 可能是什么原因造成的 有什么方法可以预防吗 查询看起来像这样 SELECT FROM S
  • 使用 Java 运行 Linux/Unix 文件系统?

    我需要创建一个 Java util 它将通过 Unix 和 或 Linux 文件系统递归并构建目录结构的对象模型 检索文件信息 大小 创建日期 上次访问日期等 另外我需要检索文件所在的物理存储设备上的信息 理想情况下 该实用程序是可移植的
  • Google Chart API:更改悬停图例的颜色

    所以我有一个柱形图其中一项内置功能是 您可以将鼠标悬停在图表图例中的某个项目 所谓的类别 上 然后您会在图表中相应的列周围看到一些突出显示边框 现在 我的图表中有许多列和类别 并且很难看到突出显示的系列 类别 因为默认行为仅在列周围显示 1
  • 使用“rvalueCast”的默认 Visual Studio 项目设置

    我有了一个令人震惊讽刺 gt 的发现 默认情况下 Visual Studio 2015 不兼容 C 11 我可以按照步骤操作我在这里列出对于每个项目 或使用 Notepad 或类似工具进行文件替换 但我确实注意到 命令行 属性有一个复选框
  • 在 SQL Server 中,我可以将多个节点从表插入到 XML 中吗?

    我想根据表中的数据在存储过程中生成一些 XML 以下插入允许我添加许多节点 但它们必须是硬编码或使用变量 sql variable SET MyXml modify insert
  • 使用 JSch 作为 SFTP 客户端时如何启用被动模式?

    我正在使用 JSch 作为 SFTP 客户端 现在我需要启用被动模式由于安全方面的一些限制 但我找不到启用的方法被动模式 有人可以告诉我该怎么做吗 被动模式 是FTP协议的一个特点 在正常 FTP 模式下 对于每个单独的文件 客户端都会侦听
  • 按下空格键时,删除的复选框会重新出现在树视图节点中

    我已经使用了公认的解决方案从这个问题去除checkbox from a 树形视图节点 in my WM INITDIALOG处理程序 加载后 tree有一个适当的外观 选择节点并单击所在位置后checkbox会是 什么也没有发生 check
  • keras多层LSTM模型的股价预测收敛于恒定值

    I ve made a multilayer LSTM model that uses regression to predict next frame s values of the data The model finishes aft
  • 如何使用indexedDB的承诺在@ngrx/core中设置initialState

    我想使用 idb 包在 ngrx 中设置初始状态 该包使用 Promise 来获取数据 但每次尝试设置时都会出现错误 我读到 ngrx 是同步的 这是否意味着它不能与 Promise 一起使用 我尝试过的不同方法 这是我的 idb 包装方法
  • CPU 如何知道针对硬件中断运行哪个中断服务程序?

    例如 按下键盘上的按键 导致向CPU生成硬件中断 CPU向中断控制器发送确认 在中断处理阶段 CPU如何根据键盘上的按键判断运行哪个中断服务程序呢 None
  • 元素跟随鼠标移动和滚动

    我正在尝试编写一些 Vanilla Javascript 来使元素跟随我的鼠标移动 我使用了 clientX clientY 和 mousemove 事件来使其跟随 但是当我滚动页面时 元素不会随鼠标移动 我想也许我需要使用滚动事件 但我正
  • 将 Firebase 身份验证与 Google App Engine 结合使用

    我是新手所以任何帮助表示赞赏 我使用 Google App Engine 节点 创建了一个应用程序 服务 它返回一个简单的 hello world 响应 请参阅https resumetemplatesconverter appspot c
  • 无法使用 .NET 验证 JSON Web 令牌 – 密钥太短

    我用过JSONWebTokennpm 模块生成 jwt var jwt require jsonwebtoken var payload iss https secure example com exp 1410819380 http ex
  • `Apache` `localhost/~用户名/` 不工作

    所以我最近刚刚升级到 Mac OS X Yosemite 我需要再次设置我的 Apache 我在下面创建一个文件夹 Sites user kevin并将文件权限更改为 777 并取消注释 php5module 行 etc apache2 h
  • 使用变量中存储的类型进行 PowerShell 类型转换

    我想将 NET 对象转换为另一个 NET 类型 但是 目标 NET类型 类 存储在变量中 我不想使用 asPowerShell 运算符 我正在使用复杂的非原始类型 你将如何实现这一目标 例如 这是 PowerShell 的方式来做到这一点