标签: dynamic-language-runtime

作为DynamicMetaObject.BindInvokeMember的结果,如何表示void方法调用?

我试图IDynamicMetaObjectProvider在深度中给出第二版C#的简短例子,我遇到了问题.

我希望能够表达一个无效的电话,而我却失败了.我确信这是可能的,因为如果我使用反射活页夹动态调用void方法,一切都很好.这是一个简短而完整的例子:

using System;
using System.Dynamic;
using System.Linq.Expressions;

class DynamicDemo : IDynamicMetaObjectProvider
{
    public DynamicMetaObject GetMetaObject(Expression expression)
    {
        return new MetaDemo(expression, this);
    }

    public void TestMethod(string name)
    {
        Console.WriteLine(name);
    }

}

class MetaDemo : DynamicMetaObject
{
    internal MetaDemo(Expression expression, DynamicDemo demo)
        : base(expression, BindingRestrictions.Empty, demo)
    {
    }

    public override DynamicMetaObject BindInvokeMember
        (InvokeMemberBinder binder, DynamicMetaObject[] args)
    {
        Expression self = this.Expression;

        Expression target = Expression.Call
            (Expression.Convert(self, typeof(DynamicDemo)),
             typeof(DynamicDemo).GetMethod("TestMethod"),
             Expression.Constant(binder.Name));

        var restrictions = BindingRestrictions.GetTypeRestriction
            (self, typeof(DynamicDemo));

        return new DynamicMetaObject(target, restrictions); …
Run Code Online (Sandbox Code Playgroud)

dynamic-language-runtime dynamic .net-4.0 c#-4.0

56
推荐指数
4
解决办法
3823
查看次数

在Asp.Net中使用Iron Python时对ExtensionAttribute的Ambigious参考

启动使用程序集的Asp.Net站点时出现以下错误,该程序集又使用dlr和Iron Python进行脚本编写.

BC30560:'ExtensionAttribute'在名称空间'System.Runtime.CompilerServices'中不明确.

问题似乎是众所周知的,问题跟踪器中有一个解决方法.

然而它说它们......

...希望在下一个版本中不需要这种解决方法.

最新版本(我正在使用的版本)是后来的版本,而不是报告中提到的版本.我也尝试下载问题跟踪器中提供的文件并替换当前版本中的文件,但这也不起作用.

除了下载源代码并手动进行构建之外,还有其他解决方案吗?

ironpython dynamic-language-runtime

49
推荐指数
1
解决办法
1487
查看次数

Expression.Lambda和运行时的查询生成,最简单的"Where"示例

我试图在运行时生成一个简单的Lambda Expression而没有运气......这样的事情:

var result = queryableData.Where(item => item.Name == "Soap")
Run Code Online (Sandbox Code Playgroud)

这是我的示例类和fixture可查询:

public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
}

IQueryable<Item> queryableData = ...;
Run Code Online (Sandbox Code Playgroud)

然后我在运行时生成一个lambda表达式,正确的代码如下:

//"item" in "item =>..."
var item = Expression
    .Parameter(typeof(Item), "item");

//property of my item, this is "item.Name"
var prop = Expression
    .Property(item, "Name");

//then "Soap" in '... => item.Name=="Soap"'
var value = Expression.Constant("Soap");

//equality expression "==" in my primer
var equals = Expression.Equal(prop, …
Run Code Online (Sandbox Code Playgroud)

.net c# lambda dynamic-language-runtime expression-trees

43
推荐指数
1
解决办法
2万
查看次数

是否有ECMAScript的.NET CLR/DLR实现?

有没有人知道针对.NET CLR/DLR的ECMAScript 的真实(i ..无蒸发器)实现?理想情况下,Rhino适用于Java.在.NET Framework/Mono Framework上运行的可靠Rhino端口将是完美的.

我只看过一些提到过的项目,但从来没有看到过任何我能够运行脚本的东西.这是我已经知道的:

  • MSScriptControl ActiveX控件:AFAIK,这是Microsoft最后一个真正符合ECMAScript标准的实现(运行JScr​​ipt 5.7).我已经与MSScriptControl集成,但不认为COM互操作是这个问题的答案.x64是此选项的杀手锏.

  • JScript.NET:我不算JScript.NET,因为它永远无法成功解析我的任何真实脚本.闭包似乎有问题.

  • 管理JScript:听起来像我想要的但它似乎死在水中.这是DLR的一个主要示例实现,但后来与SilverLight纠缠在一起,并且自2007年以来似乎已经逐渐消失.有关此状态的可信来源将是有帮助的.

  • MyJScript:作为DLR的教程实现而构建.有人知道这是一个完整的实现吗?

  • Jint:.NET的JavaScript解释器.不支持Currying或try- catch- finally.

  • RemObjects Script for .NET:一个有趣的竞争者仍在开发中.我对他们的营销实际上是什么感到困惑,但听起来它最终可能是合适的.如果有人知道更多有关它也会有所帮助.

  • V8 for .NET:如果有人将V8移植到.NET,这将是很好的.据我所知,这方面也没有太大的努力.链接是一个从托管C++包装器调用它的想法.

对于后台,我希望能够在.NET中执行JavaScript; 即将一组脚本加载到上下文中并调用该上下文并检索执行结果.目前,我通过繁琐的COM Interop跳过箍使用MSScriptControl.COM的不一致使得部署和确保一致的执行非常困难.

我希望能够从.NET中执行相当复杂的JavaScript测试工具.这不是用于创建用户宏或简单的小脚本; 我需要像Rhino这样的真实JavaScript环境.如果实现是在CLR(而不是COM)之上运行的,那么这对当前的一些问题确实有帮助.

.net javascript clr dynamic-language-runtime ecma262

38
推荐指数
6
解决办法
1万
查看次数

动态朗.运行时与反射

我打算为我的新项目使用动态关键字.但在介入之前,我想了解使用动态关键字而不是反射的优缺点.

在专业人士的位置,我可以找到关于动态关键字:

  • 可读\可维护代码.
  • 更少的代码行.

虽然与使用动态关键字相关的负面因素,我听到的是:

  • 影响应用程序性能.
  • Dynamic关键字在内部是Reflection的包装器.
  • 动态类型可能会成为难以找到错误的滋生地.
  • 影响与以前的.NET版本的互操作性.

请帮助我看看我遇到的利弊是否合情合理?

c# reflection dynamic-language-runtime dynamic

38
推荐指数
3
解决办法
2万
查看次数

Iron Python:Iron Python有什么用处

我对python很感兴趣,但是我在.NET环境中工作,所以我正在研究Iron Python,并想知道它将用于什么.

你能写一个应用程序吗?或者是否为您的应用添加脚本语言?

你们是如何使用它的?

.net python ironpython dynamic-language-runtime

27
推荐指数
4
解决办法
1万
查看次数

CL#中的CLR和DLR有什么区别?

CL#中的CLR和DLR有什么区别?这两个概念可比吗?

c# clr dynamic-language-runtime dynamic

25
推荐指数
4
解决办法
2万
查看次数

什么是DLR(.NET 4.0 beta 1)的最佳信息来源?

我目前正在深入研究第二版C#,并试图实现"动态协议缓冲区" - 即在我现有的协议缓冲库之上的动态支持级别.因此,我有一个DlrMessage派生自的类型DynamicObject.经过一段时间的游戏,我设法让它以极少的代码回应简单的属性,但我想要进一步 - 并真正了解正在发生的事情.

到目前为止,我还没有找到任何关于DLR的好解释 - 很多博客文章现在都已经过时了,因为之前的CTP和.NET 4.0 beta之间已经发生了变化(我相信).MSDN文档对于DynamicObject来说,目前还很少.

我最直接的疑问是,是否有一种简单的说法,"使用反射来绑定任何我无法处理的调用,使用这个特定的对象." (换句话说,如果可能的话,我想增加现有的反射绑定,而不是自己做所有事情.)不幸的是,我没有通过猜测得到很多.

我应该知道哪些最终和最近的文档来源?我知道关于新技术的部分写作探索,但是有助于获得帮助:)

c# dynamic-language-runtime dynamic c#-4.0

22
推荐指数
2
解决办法
2332
查看次数

使CLR/.NET语言可调试

有什么资源可以使CLR/.NET语言可调试?我正在开发一个ActionScript 3到IL编译器,它使用DLR CallSites和CallSiteBinders来处理静态编程语言的动态方面.我正在寻找有关将发出的IL映射返回源代码的任何信息,我也想知道如何使动态调用站点也能映射回来.

所以这最终有两个问题:

  • 如何使IL可调试?
  • 如何使DLR呼叫站点可调试?

任何帮助将不胜感激!

我正在寻找的"debuggabilty"

在附加的Visual Studio实例中:

  • 单步执行代码
  • 查看当地人
  • 查看堆栈跟踪

compiler-construction debugging cil dynamic-language-runtime dynamic

19
推荐指数
1
解决办法
1147
查看次数

如何突出visual studio中的动态代码

有可能,如果是这样,如何让Visual Studio在代码中突出显示动态表达式?

当我只是在一些代码上面徘徊时,visual studio告诉我这是一个动态表达.这让我意识到我在我的代码中犯了一个错误并使用了一个动态太多.但我也意识到,如果我没有徘徊,那么应该是静态的"大片"动态代码就会逃脱.

所以我想知道是否有可能使Visual Studio改变动态表达式的背景颜色,因此这些部分将清晰可辨.

[edit]
动态表达式是指在常规代码中使用dynamic关键字.

dynamic-language-runtime syntax-highlighting visual-studio-2010 visual-studio dynamic-code

19
推荐指数
1
解决办法
690
查看次数