.Net 4将拥有DLR(动态语言运行时)。我知道它将用于像Iron Python和Iron Ruby这样的东西。但是它还能做什么呢? DLR有什么用处? DLR是如何工作的?
我计划在我的新项目中使用动态关键字。但是在开始之前,我想了解使用动态关键字而不是反射的优缺点。 以下是我在使用动态关键字方面找到的优点: 易读易维护的代码。 代码行数更少。 然而,使用动态关键字可能带来的负面影响包括: 影响应用程序性能。 动态关键字在内部是反射的一个包装器。 动...
我希望您能够动态地向动态对象添加成员。好的,我想需要一些澄清... 当您这样做时: dynamic foo = new ExpandoObject(); foo.Bar = 42; 在运行时会动态添加“Bar”属性。但是,代码仍然以静态方式引用“Bar”(即名称“Bar”是硬编码的)。...
我一直在使用一个托管IronPython、IronRuby和(希望能够)PowerShell的C#应用程序。由于IronPython和IronRuby完全基于DLR构建,因此使用它们的API基本相同。 IronPython.Hosting.Python.CreateEngine() 并且...
随着.NET 4.0测试版的推出和.NET动态语言运行时的更广泛可用性,我猜这些话题将变得更加“热门”。 我对DLR和PowerShell之间的概念差异感到困惑。在我看来,如果我想在我的.NET应用程序中提供脚本功能,我可以使用DLR(从而在IronPython或IronRuby中启用脚本,...
我在一个有关构建Where查询表达式树的问题上找到了非常好的答案。 Expression.Lambda和运行时生成查询,最简单的“Where”示例 请问是否有人能够帮助我,并展示如何在嵌套属性的情况下实现此示例。我的意思是,代替:var result = query.Where(item ...
我很喜欢Python,但我在.NET环境中工作,因此我正在研究Iron Python,并想知道它的用途。 您能用它编写应用程序吗?还是用于向应用程序添加脚本语言? 你们如何使用它?
当我想在C#中动态调用一个静态定义的方法("静态"是指在编译时确定,而不是类级成员),我可以使用反射来获取该方法的句柄并调用它:typeof(Foo).GetMethod("Bar").Invoke(foo, new object[] { /* params */ }); 然而,通过继承Dyn...
在研究C#动态关键字的工作原理时,我遇到了一些奇怪的行为。看起来几乎像是一个bug,但更可能是有原因的。 在下面的代码中,有两个调用,一个是对obj1的调用,另一个是对obj2的调用,但只有其中一个能够正确执行。看起来本地变量类型是原因,但"Hello"也应该可以从IDynamicTarge...
我希望以这样的方式托管动态语言运行时(DLR),使得运行其中任意脚本的用户不能使进程崩溃? DLR hosting spec描述了如何在单独的ApplicationDomain中托管DLR。这允许拆除并卸载脚本运行时,并通过CAS限制某些操作(例如,我可以限制文件系统访问或禁止使用反射)。 ...