gpt4 book ai didi

c# - powershell cmdlet的动态输出类型?

转载 作者:行者123 更新时间:2023-12-03 01:18:41 26 4
gpt4 key购买 nike

编写 cmdlet 时,您可以指定 OutputType它上面的属性告诉管道中的下一项您可以从 cmdlet 发出的类型。但是,有没有办法动态指定呢?属性不允许您进行动态返回,因为它们必须是编译时常量(除非有一些魔法)

问题是我的 cmdlet 实际上是在运行时通过反射发射生成类型,我希望能够公开这些类型以获得剩余链的强类型

最佳答案

OutputType 不是契约,因此它不能帮助强制执行强类型。 OutputType 是 Intellisense 等工具利用的提示。也就是说,它仍然非常方便。

听起来您的 cmdlet 的行为有点像 New-Object 或 Get-CimInstance。 PowerShell 通过检查它们的参数来确定这些 cmdlet 的输出类型,并且此功能不可扩展。

如果您正在生成一组固定的类型,我建议在 OutputType 中明确列出这些类型 - 您可以在 OutputType 中将类型指定为字符串,因此类型是否存在并不重要。

如果您正在生成用户定义的类型(比如您的 cmdlet 类似于 New-Class),那么即使使用私有(private)反射,我也看不到任何实用的解决方案。通过私有(private)反射,我很确定您可以更新类型列表,但我认为您不能以对 Intellisense 有用的方式更新该列表,因为当 PowerShell 确定管道的类型时没有良好的可扩展性 Hook .

关于c# - powershell cmdlet的动态输出类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com