|
|
1
23
我发现并经常阅读的最好的信息来源是克里斯·伯罗过去几年发表的文章。 his blog . 还有 official DLR documentation page 哪个关了 main DLR site . |
|
|
2
5
我现在也在研究这个,还没有太多的信息。我帮不了你的问题,但我发现以下是一些信息: 在pdc视频中有相当数量的内容。 http://channel9.msdn.com/pdc2008/TL44/ http://channel9.msdn.com/pdc2008/TL10/ 本文将讨论DLR如何与Ironpython一起工作: http://msdn.microsoft.com/en-us/magazine/cc163344.aspx 培训工具包预览中有非常少量的内容: http://www.microsoft.com/downloads/details.aspx?FamilyID=752cb725-969b-4732-a383-ed5740f02e93&displayLang=en 希望这有帮助 亚历克斯 |
|
|
3
3
默认情况下,如果try*函数返回false,则dynamicObject将说“回退到反射”。因此,您已经可以继承属性/字段/方法并将其添加到子类中,如果动态路径不进行查找,这些属性/字段/方法都将由反射处理。 更深入地讲,您可能希望了解idynamicMetaObjectProvider。在这个较低的级别上,您说回退到反射的方式是对传入的dynamicmetaobjetBinder调用回退*方法。然后让调用语言提供解决方案。然后,您可以返回该AST或将其组合成一个更大的AST,无论您返回什么。基本上,回退*让您得到调用语言将产生的AST,包括正确的错误(异常、JS中未定义等)。 DynamicObject对反射进行回退的方式是,它实际上调用了绑定器的回退*方法两次。第一次在没有“errorSuggestion”参数的情况下返回。这将获取使用反射构建的错误或AST。然后生成一个ast,类似于:
然后,它接受这个组合的AST,并实际将其作为第二个回退的活页夹的错误建议提交。如果绑定失败,绑定器应该遵守这个错误建议。但如果存在.NET成员,则会丢弃错误建议,并优先使用.NET绑定。最后,如果语言不知道绑定是否成功(例如,语言具有“方法缺失”类型特性),它可以再次结合ASTS和它的动态检查。因此,使用回退,您不仅可以说做反射,还可以选择动态成员还是静态成员优先。 |