构建方法调用

2024-04-27

尝试遵循本指南:https://github.com/Readify/Neo4jClient/wiki/cypher-examples#get-all-users-by-label https://github.com/Readify/Neo4jClient/wiki/cypher-examples#get-all-users-by-label我需要创建一个 lambda 表达式才能将其提供给Return方法。在 C# 中,它看起来像这样:

.Return(n => n.As<Project>())

在Powershell中我已经这样做了(根据@PetSerAl的建议:返回过载失败 https://stackoverflow.com/questions/30314696/return-overload-fails):

$exp = [System.Linq.Expressions.Expression]
$param = $exp::Parameter([Neo4jClient.Cyper.ICypherResultItem], "n")
$body = $exp::TypeAs($p, (new-object Project).GetType())
$lambda = $exp::Lambda([Func[Project]], $body, $p)

这样传递给 lambda 表达式的参数被输入为接收 Neo4j 表达式将传递的内容,并且方法体将其转换为Project(本地定义的类)。现在我可以将它传递给我的方法:

$something.Return($lambda)

但是,我收到这个错误

使用“1”个参数调用“Return”时发生异常:“表达式必须 被构造为对象初始值设定项(例如:n => new MyResultType { Foo = n.Bar }),一个匿名类型初始值设定项(用于 例如:n => new { Foo = n.Bar }),方法调用(例如:n => n.Count()),或成员访问器(例如:n => n.As().Bar)。你 无法提供代码块(例如:n => { var a = n + 1; 返回一个; })或使用带参数的构造函数(例如:n => new 富(n))。如果您使用 F#,也支持元组。参数名称: 表达式" 在行:1 字符:1 + $neo.Cypher.Match("n").Return($return) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息:未指定:(:) [],方法调用异常 + FullQualifiedErrorId:ArgumentException

这清楚地表明我没有正确地表述 lambda 表达式的主体。谁能建议应该如何?


In C#你有:

.Return(n => n.As<Project>())

如果我们把它拿出来看看类型,n => n.As<Project>() is:

Expression<Func<ICypherResultItem, Project>>

要创建它,请使用Expression Trees in C#,我们最终会做这样的事情:

ParameterExpression parameter = Expression.Parameter(typeof (ICypherResultItem), "n");
MethodCallExpression right = Expression.Call(parameter, typeof (ICypherResultItem).GetMethod("As").MakeGenericMethod(typeof(Project)));
Expression<Func<ICypherResultItem, Project>> expression = Expression.Lambda<Func<ICypherResultItem, Project>>(right, parameter);

因此,将其转换为 PowerShellI think是这样的:

$exp = [System.Linq.Expressions.Expression]
$param = $exp::Parameter([Neo4jClient.Cypher.ICypherResultItem], "n")
$body = $exp::Call($param, [Neo4jClient.Cypher.ICypherResultItem].GetMethod("As").MakeGenericMethod[Project])
$lambda = $exp::Lambda([Func[ICypherResultItem, Project]], $body, $param)

I am in no way一个 powershell 人,我怀疑你能够翻译C#更好,但希望这能让你走上正确的轨道......

*更新我*一个小修复就可以让一切正常工作。声明一个 var 来保存类型数组MakeGenericMethod期望,并将其传递给:

$PrjType = @((new-object Project).GetType())
$body = $exp::Call($param, [Neo4jClient.Cypher.ICypherResultItem].GetMethod("As").MakeGenericMethod($PrjType))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建方法调用 的相关文章

  • 自动执行将制表符分隔文件中的值乘以 -1 来求反的过程

    我一直在 Excel 中手动处理大量文件 我已经进行了一些搜索 但还没有找到关于如何以自动化方式实现此过程的明确最佳实践 我的手动流程如下 我有一个 tab 制表符分隔 文件 每行总共有 8 个 列 我需要对每行最后 5 列的数值求负 我一
  • 批处理文件中的 Powershell - 如何转义元字符?

    运行 Windows 7 当我复制文件在例程期间到外部磁盘文件备份 我使用 Powershell v2 从批处理文件 在副本文件上重新创建原始文件的所有时间戳 以下代码在大多数情况下都能成功运行 但并非总是如此 SET file 1 SET
  • 批处理文件中的退出代码不会传播到父 powershell 脚本

    请注意 c temp 1 cmd echo off setlocal cmd c dir aaa IF ERRORLEVEL NEQ 0 GOTO fail GOTO end fail echo Script failed end endl
  • Powershell 范围处理 v2/v3 的未记录更改?

    背景 我一直在编写一个 powershell 脚本 用于将文件从 Windows Server 08 使用 Powershell 2 x 上的 Sharpoint 2010 实例迁移到 Windows Server 12 使用 Powers
  • ConvertTo-JSON 具有单个项目的数组

    我正在尝试创建一个 JSON 序列化数组 当该数组仅包含一项时 我得到一个字符串 而不是字符串数组 JSON 格式 多个项目 按预期工作 PS C gt one two ConvertTo JSON one two 单个项目数组 不符合预期
  • 如何使用 Powershell 查找组成员身份以包括嵌套组的成员并包括父组的名称

    我正在尝试创建一个组中所有用户的 CSV 以包含嵌套组的成员 并映射每个成员所在的组 我发现以下 powershell 命令几乎可以完成此任务 但我还需要知道嵌套组的每个成员的嵌套组的名称 MembersALL MembersRecursi
  • 在 PowerShell 中通过 UDP 发送和接收数据

    我正在尝试编写一个脚本来使用 PowerShell 进行测试和应用 测试应包括通过 UDP 向远程服务器发送字符串 然后读取该服务器的响应并对结果执行某些操作 我需要的唯一帮助是脚本的中间两个步骤 发送字符串 然后 接收响应 在端口 UDP
  • Powershell send-mailmessage - 向多个收件人发送电子邮件

    我有这个 powershell 脚本来发送带有附件的电子邮件 但是当我添加多个收件人时 只有第一个收件人收到消息 我已经阅读了文档 但仍然无法弄清楚 谢谢 recipients Marcel lt email protected cdn c
  • 将组成员身份从 AD 中的一个用户复制到另一用户

    我正在尝试构建一个脚本 它将组成员身份从 AD 中的一个用户复制到另一个用户 我正在尝试使用 powershell 来自动执行此任务 然而 我在为用户创建支票时陷入困境 换句话说 当我将组成员身份从一个用户复制到另一个用户时 我希望能够在添
  • Powershell脚本运行带有参数的exe文件

    我需要脚本来运行带参数的 exe 文件 我就是这么写的 请问有更好的方法吗 Command Networkpath Restart exe Parms t 21600 m 360 r f Prms Parms Split Command P
  • 为什么我无法通过 Powershell DSC 在无人值守模式下配置 TFS Build Service?

    使用以下 DSC 配置 仅资源部分的片段 删除 SO 的前导码 诊断和 Start DscConfiguration 部分 Package TFSServer2013 Name Microsoft Team Foundation Serve
  • 跳转到脚本中的某些位置

    有没有办法让脚本跳转到命令提示符中的特定位置 例如 GOTO 我想让脚本结束时跳到开头 tag1 Read Host Enter tag cls sc exe tag1 start RemoteRegistry cls Start Slee
  • 如何让Register-ObjectEvent在后台运行?

    我有一个使用 PowerShell 的脚本Register ObjectEvent观察文件夹的更改 由于 Register ObjectEvent 仅在 PowerShell 会话处于活动状态时才起作用 因此我需要保持 PowerShell
  • Jenkins 中的 Powershell 转义路径字符

    我有一个声明性管道 应该执行 powershell 步骤来安装路径 路径作为参数提供 parameters string name UNC defaultValue server01 lab local shared data descri
  • Connect-AzAccount 无提示

    我正在尝试使用以下方式登录 Azure 门户 Connect AzAccount 此代码要求我输入我不想要的提示 我们可以使用一些简单的配置脚本自动登录吗 正如Joy所说 您可以通过凭据使用用户帐户登录 但不会出现任何提示 请确保您的帐户未
  • PowerShell 中的触摸功能

    我最近在 PowerShell 配置文件中添加了触摸功能 PS gt notepad profile function touch Set Content Path args 0 Value null 保存并运行测试 touch myfil
  • Powershell:启动进程不将参数传递给 cmd.exe

    这些是在 powershell 控制台 Windows 10 中运行的命令 username Username password Password securePassword ConvertTo SecureString password
  • 作为服务运行时未找到 PowerShell 模块

    我有一个项目 我将 Office 365 许可证分配给用户 有一个 Web 项目允许管理员查看可用许可证并为用户选择许可证 在后台 有一项服务每 15 分钟执行一次实际的许可证分配 以及许多其他任务 我们不直接分配许可证的原因是用户可能尚未
  • Powershell 调用程序集委托

    我有一个用于过程控制应用程序的 dll 程序集 我在我的内部使用 load电源外壳 script 该DLL包含我需要使用的委托类型 委托名称是 X Y Delegate 我在该 DLL 中有另一个方法 应该这样调用 Method deleg
  • 在powershell中检查文件是否可读且正常

    我是 powershell 新手 我想检查文件是否可读且正常 在 unix 中 我们可以使用 f 和 r 在一行中完成此操作 例如 以下 shell 脚本函数接受文件名作为参数并检查文件的可读性和规律性 与此等效的 powershell 是

随机推荐

  • 无法拦截Android应用程序的流量

    最近 我正在尝试测试和拦截来自开发的应用程序的流量罗莫比尔 我设置了一个代理burp 当然 我已经在我的设备上安装了 burp 证书 因此我可以拦截设备上的其他应用程序 但我无法在 burp suite 上看到相关应用程序的流量 相反 该应
  • Neo4j 入门

    我对 neo4j 完全陌生 很抱歉问这样一个基本问题 我已经安装了 neo4j 我正在使用 shell localhost 7474 webadmin console 我正在寻找一个很好的示例 它使用一些 shell 命令从预先存在的图形数
  • jQuery,将分隔符更改为点并除以两个选定的数字

    var result parseFloat lot2 text parseFloat span Price text result text result 如何将选定值从逗号分隔值转换为点分隔值 有这个函数str replace 但我不知道
  • 向 Rails 中的所有活动链接添加“活动”类?

    基本上 我有很多类似这样的代码 link to t profile business path business class active if current page business path business 这不是很干 我想知道是
  • java中调用父构造函数

    我有两节课Parent and Child 而Parent有一个需要 3 个参数的构造函数 class Parent public Parent String host String path int port 现在我想要Child构造函数
  • 在 Hiera 中进行基本数学运算

    我试图根据自定义事实和基本模数在 hiera 中设置 crontab 的工作日 但我什至不知道这是否可能 我想做这样的事情 cron job command do something user myuser hour instance mi
  • 在 C# 中创建 Cron 作业

    我正在用 C 编写一个调度类型应用程序 并允许用户存储他们想要在特定时间运行的任务 现在 我为他们提供了指定运行频率 每日 每周 每月 以及指定时间的选项 然后将其存储在数据库中 我在理解其背后的伪代码时遇到了一些麻烦 并且正在寻找一些有关
  • std::async 可以调用 std::function 对象吗?

    是否可以使用 std async 调用使用 std bind 创建的函数对象 以下代码无法编译 include
  • 删除 highcharts.com 积分链接

    我刚刚购买高图表 http www highcharts com 但制作人员链接仍然出现在我的图表上 这些图表在我的网站上非常突出 并且扭曲了图表视图 我以为我会有一个选项 那么如何删除它呢 您可以自定义制作人员名单 更改 URL 文本 位
  • android中如何处理图片下载不完整的情况?

    我正在应用程序中下载图像以将其填充到用户界面上 这是我用来下载该图像并将其保存到设备外部存储器的代码 File firstDirectory new File Environment getExternalStorageDirectory
  • Haskell FFI - 你能从 Haskell 数据结构中获取 C 指针吗?

    我有很多 C 结构体 结构如下 typedef struct unsigned int a unsigned int b StructA 还有很多功能 比如 void doSomethingWith StructA StructB Stru
  • 以从左到右的模式启动 Activity

    我面临一个问题 我有三项活动 我需要向左滑动开始新活动 Activity1 Activity2 Activity3 means 当我单击按钮时 新活动不应像 Android 行为那样直接显示 我希望新活动来自右侧并显示在当前屏幕上 任何人都
  • 获取DataGridView中特定列的值

    我的 Winforms 应用程序中有一个 datagridview 用户可以单击 datagridview 上的任意位置 然后单击按钮对该数据行执行操作 但是 为了做到这一点 我需要从该行恢复 ID 现在请记住 用户可能尚未单击 ID 列
  • 如何在Python 2.7中访问ODB文件

    我想在 Python 中访问 ODB 文件 使用 LibreOffice Base 创建 并提取一个表以供进一步使用 ODB包含多个表 一种关系设计和多种表单 是否可以在不使用任何 SQL 的情况下实现这一目标 Edit 由于我自己解析这种
  • const QList 警告 = QList() << 0; gcc 4.7.2 的段错误

    因此 主题行中提到的代码会导致 Qt 4 8 3 和 gcc 4 7 2 出现分段错误 这是在 cpp 文件中的任何类 结构之外 并且与 gcc 4 4 一起使用 const QList
  • Cassandra 墓碑对多个查询与单个查询进行计数

    我有一个 cassandra 表定义如下 CREATE TABLE mytable colA text colB text timeCol timestamp colC text PRIMARY KEY colA colB timeCol
  • 如何在plotly dash应用程序中编写数学符号?

    我想在绘图破折号应用程序中绘制数学符号 例如 我尝试过这个 import dash import dash html components as html app dash Dash name app layout html Div chi
  • 如何可靠地检测实际安装的.NET 4.5版本?

    我的实际问题是我遇到了两个版本的 NET 4 5 完整设置 a possibly older one which is also available when downloading SQL Server Data Tools size 5
  • 如何在 servicestack.net 中实现身份验证

    我正在调查 servicestack net 但它的示例和文章似乎没有涵盖身份验证 这是由 servicestack net 处理的东西 如果是的话如何处理 我特别有兴趣实现对以下方面的支持 OAuth 因此能够检查原始请求并验证它 检索关
  • 构建方法调用

    尝试遵循本指南 https github com Readify Neo4jClient wiki cypher examples get all users by label https github com Readify Neo4jC