gpt4 book ai didi

c# - Powershell 为 Func 而不是 Action 创建脚本 block

转载 作者:行者123 更新时间:2023-11-30 14:08:02 27 4
gpt4 key购买 nike

我尝试使用 Powershell 中的一个类。这个类有一个方法,叫做Execute() ,有两个重载:一个需要 Func<T>还有一个需要 Action<T> .我可以调用带 Action<T> 的重载使用脚本 block 作为委托(delegate),但我无法弄清楚如何调用采用 Func<T> 的重载:

add-type -TypeDefinition @'
using System;

public class DelegTest
{
public R Execute<R>(Func<R> method)
{
return method();
}

public void Execute(Action method)
{
Execute(() => { method(); return true; });
}
}
'@

$t = new-object DelegTest
$t.Execute({ 1 + 1 }) # returns nothing

如何调用采用 Func<T> 的重载?我假设这需要创建一个具有返回类型的 ScriptBlock,但我不知道该怎么做; Powershell 解析器显然不够智能,无法自动执行此操作。

最佳答案

您需要自己将ScriptBlock 转换为正确的委托(delegate)类型:

$t.Execute([Func[int]]{ 1 + 1 })

关于c# - Powershell 为 Func<T> 而不是 Action<T> 创建脚本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146638/

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