【问题标题】:Access Expression methods in IronRubyIronRuby 中的访问表达式方法
【发布时间】:2010-04-07 13:31:49
【问题描述】:

这段代码在 C# 中运行良好:

Expression.Lambda(LambdaBody);

但是 IronRuby 似乎没有任何构建 AST 的方法可见。我需要 Microsoft.Scripting.Core 和 Microsoft.Scripting 库。我需要别的东西吗? 这是 IronRuby 代码:

require 'C:\reorganize\software\ironruby-1.0rc3\ironruby\bin\microsoft.scripting.core'
require 'C:\reorganize\software\ironruby-1.0rc3\ironruby\bin\microsoft.dynamic'
require 'C:\reorganize\software\ironruby-1.0rc3\ironruby\bin\microsoft.scripting'
include Microsoft::Scripting::Ast
p Expression.Lambda(lambda_body) #i have already constructed the lambda body

给予:

undefined method `Lambda' for #<TypeGroup: Microsoft::Scripting::Ast::Expression, Microsoft::Scripting::Ast::Expression[TDelegate]> (NoMethodError)
    from -e:1:in `load'
    from -e:1

【问题讨论】:

  • System.Linq.Expressions.Expression 类位于 System.Core 程序集中。你有参考过吗?
  • 我说的是 Microsoft::Scripting::Ast::Expresstion
  • 您确定您的代码中没有拼错Expression 吗? (您在评论中写了 Express_t_ion。)

标签: c# .net ruby ironruby dynamic-language-runtime


【解决方案1】:

Microsoft.Scripting.Ast 命名空间中似乎有两个Expression 类:一个泛型和一个非泛型。尝试使用.of() 强制使用非泛型:

Expression.of().Lambda(lambda_body)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多