标签: dynamic-language-runtime

如何突出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
查看次数

F#中的C#'动态'

在C#中使用DLR的一个例子如下:

dynamic dyn = new MyObject();
dyn.MyMethod(); //resolved at runtime
Run Code Online (Sandbox Code Playgroud)

什么是F#中的等价物?

谢谢.

f# dynamic-language-runtime dynamic

18
推荐指数
3
解决办法
5358
查看次数

如何在动态对象上动态调用方法?

当我想在C#中的任何对象上动态调用静态定义的(在"编译时确定"意义上的"静态",而不是"类级别成员"意义上的)方法时,我可以使用反射来获取该方法的句柄并调用它:

typeof(Foo).GetMethod("Bar").Invoke(foo, new object[] { /* params */ });
Run Code Online (Sandbox Code Playgroud)

但是,通过继承DynamicObject响应(未定义的)实例方法调用而使对象变为TryInvokeMember动态,并且由于显而易见的原因,类不响应的动态方法不会通过反射公开.这意味着我无法获得应该响应的方法的方法句柄TryInvokeMember.

具有讽刺意味的是,在我看来,您无法dynamic像在非dynamic对象上调用已定义的方法那样轻松地动态调用对象上的动态方法.

我考虑过TryInvokeMember直接调用,但第一个参数必须是InvokeMemberBinder一个抽象类的实例.我觉得如果我必须实现一个类来调用动态对象的动态方法,我一定是做错了.

如何dynamic通过名称调用对象上的方法,知道目标类没有实现它并且应该响应使用它TryInvokeMember

.net c# dynamic-language-runtime

18
推荐指数
2
解决办法
5409
查看次数

电话网站解释?

扫描互联网,我很难以一种简单的方式理解- 术语呼叫网站(@dlr).我一直在这里读到CallSite是:

一个网站说

调用方法的位置.

一本书说:

呼叫网站.这是DLR的一种原子 - 可以被视为单个单元的最小代码片段.一个表达式可能包含许多呼叫站点,但行为是以自然方式构建的,一次评估一个呼叫站点.对于剩下的讨论,我们一次只考虑一个呼叫站点.有一个呼叫站点的小例子可以参考,所以这里有一个非常简单的例子,其中d当然是动态类型的变量

d.Foo(10); 调用站点在代码中表示为System.Runtime.CompilerServices.CallSite.

另一本书说:

编译器发出的代码最终会生成一个描述操作的表达式树,由DLR在运行时绑定的调用站点管理.呼叫站点本质上充当呼叫者和被呼叫者之间的中介.

对不起,我不能看到这3个解释组合成一个简单的解释.

我很乐意得到一个简单的解释:

我可以解释一下我的妻子 - 电话网站是什么?

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

15
推荐指数
2
解决办法
4417
查看次数

.Net 4.0是否包含新的CLR或与版本2.0保持一致

.Net 4.0会使用新版本的CLR(v2.1,3.0)还是会坚持使用现有的v2.0?

补充:是否可能与CLR v2.0保持一致并添加DLR v1.0?

更新:虽然这可能看起来像一个无法回答的推测性问题,但VS团队似乎正在发布关于VS10和.Net 4.0的越来越多的信息,所以很快就不会出现这种情况.(可在此处获取信息 - > http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx)

versioning clr dynamic-language-runtime .net-4.0

14
推荐指数
2
解决办法
5271
查看次数

打印出Linq表达式树层次结构

动态语言运行时(DLR) 有表达的一些很酷的代码,其中包括一些非常漂亮的代码打印出来,我想使用,使表达式树:

int a = 1;
int b = 2;
Expression<Func<int, int>> expression = (c) => a + (b * c)
expression.Evaluate(5, stringBuilder)
Run Code Online (Sandbox Code Playgroud)

输出:

(5) => a + (b * c) = 11 Where
     a = 1
     b * c = 10 Where
          b = 2
          c = 5
Run Code Online (Sandbox Code Playgroud)

我在网上发现了一些代码,但发现只有表达式没有参数时它才有效.

http://incrediblejourneysintotheknown.blogspot.com/2009/02/displaying-nested-evaluation-tree-from.html

然后我发现了类似方法的DLR实现.然而,DLR有自己的Expression类和许多其他标准C#类型的自定义实现,所以我有点困惑.谁知道我怎么能实现上述?

linq string dynamic-language-runtime expression-trees

14
推荐指数
1
解决办法
4113
查看次数

F#动态对象访问

有没有办法在F#中访问类似于C#dynamic的DLR对象(例如,DynamicObject子类实例)成员(属性和方法)?

.net c# f# dynamic-language-runtime

14
推荐指数
3
解决办法
4083
查看次数

PowerShell Runspace与DLR

随着.NET 4.0 beta的推出,以及.NET动态语言运行时的广泛可用性,我猜这些主题将变得"更热".

我对DLR和PowerShell之间的概念差异感到困惑.在我看来,如果我想在我的.NET应用程序中提供脚本功能,我可以使用DLR(以及在IronPython或IronRuby中启用脚本,或者可用于DLR的任何其他Iron*语言),或者托管PowerShell运行空间.

每种方法的优缺点是什么?为什么我可以选择一个而不是另一个?作为一种动态语言本身,以及一流的.NET语言,PowerShell为何也不针对DLR?

.net powershell scripting dynamic-language-runtime

12
推荐指数
1
解决办法
1353
查看次数

C#4.0:将动态转换为静态

这是一个与我在这里问到的另一个相关的分支问题.我把它分开了,因为它真的是一个子问题:

我很难将类型的对象转换dynamic为另一种(已知的)静态类型.

我有一个执行此操作的ironPython脚本:

import clr
clr.AddReference("System")
from System import *

def GetBclUri():
    return Uri("http://google.com")
Run Code Online (Sandbox Code Playgroud)

请注意,它只是新建了一个BCL System.Uri类型并返回它.所以我知道返回对象的静态类型.

现在在C#land,我正在新建脚本托管的东西,并调用此getter返回Uri对象:

dynamic uri = scriptEngine.GetBclUri();
System.Uri u = uri as System.Uri; // casts the dynamic to static fine
Run Code Online (Sandbox Code Playgroud)

没问题.我现在可以使用强类型的Uri对象,就像它最初静态实例化一样.

然而....

现在我想定义我自己的C#类,它将在动态范围内新建,就像我对Uri一样.我简单的C#类:

namespace Entity
{
    public class TestPy // stupid simple test class of my own
    {
        public string DoSomething(string something)
        {
            return something;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在Python中,新建一个这种类型的对象并返回它:

sys.path.append(r'C:..path here...')
clr.AddReferenceToFile("entity.dll")
import Entity.TestPy

def GetTest(): …
Run Code Online (Sandbox Code Playgroud)

c# ironpython dynamic-language-runtime dynamic

12
推荐指数
1
解决办法
2301
查看次数

表达式树复制或转换

如何转换表单的ExpressionTree

Expression<Func<POCO1, bool>> exp = p => p.Age > 50;
Run Code Online (Sandbox Code Playgroud)

Expression<Func<POCO2, bool>> exp2 = p => p.Age > 50;
Run Code Online (Sandbox Code Playgroud)

其中POCO1和POCO2是C#对象,并且都具有Int32 Age属性

c# lambda dynamic-language-runtime expression-trees

12
推荐指数
1
解决办法
4144
查看次数