DLR(Dynamic Language Runtime)是Silverlight中提供的一套非常强大的动态语言运行时。目前2.0 beta2中支持Python,Ruby和JSX。利用DLR,你可以很方便的使用熟悉的动态语言编写Silverlight程序。本文主要介绍如何在托管语言中调用动态语言。

首先,我们需要初始化动态语言的环境配置,从中获取所有可以使用的动态语言列表,然后得到相应动态语言的运行引擎。

ScriptRuntimeSetup setup = new ScriptRuntimeSetup(true); //true表示载入所有支持的动态语言的环境配置
ScriptRuntime runtime = ScriptRuntime.Create(setup); //创建动态语言运行环境

foreach (LanguageProviderSetup langSetup in setup.LanguageProviders) //遍历所有动态语言的环境配置
{
    try
    {
        ScriptEngine engine = null;
        if (runtime.TryGetEngine(langSetup.Names[0], out engine)) //尝试获取动态语言的运行引擎
        {
            //engine就是我们需要的运行引擎
        }
    }
    catch (MissingTypeException) //处理创建不支持的动态语言时可能抛出异常
    {
    }
}

获取了运行引擎后,我们就可以执行动态语言的代码了。

public  class  MyErrorSink :  ErrorSink //编译错误处理
{
     IList< string> m_ErrorMsg =  new  List< string>();
     public  IList< string> ErrorMsg
    {
         get {  return m_ErrorMsg; }
    }

public MyErrorSink()
    {
    }
     public  virtual  void Add( SourceUnit source,  string message,  SourceSpan span,  int errorCode,  Severity severity)
    {
         if (severity ==  Severity.Error || severity ==  Severity.FatalError)
        {
            m_ErrorMsg.Add(message);
        }
    }
}

LanguageContext langContext = HostingHelpers.GetLanguageContext(engine);
SourceUnit sourceUnit = langContext.CreateSourceUnit(new SourceStringContentProvider("1/4+3"), null, SourceCodeKind.Expression); //创建代码序列:1/4+3

MyErrorSink errorSink = new MyErrorSink();
try
{
    Scope scope = new Scope();
    object ret = sourceUnit.Execute(scope, errorSink); //执行动态语言代码,ret就是执行结果的返回值了

if (errorSink.ErrorMsg.Count > 0) //检查编译错误
    {
        //
    }
}
catch (Exception)
{
}

是不是很方便呢 :-) 完整的DLR文档请参考http://compilerlab.members.winisp.net/dlr-spec-hosting.pdf(英文版)

PS:你也可以使用配置文件或者直接初始化动态语言运行引擎。: )

Software Development Engineer
范翔

DLR in Silverlight相关推荐

  1. 收集一些有关SilverLight(WPF/E)的链接

    1.介绍类: 1.1Microsoft欲以SilverLight挑战flash/flex 1.2能提供丰富体验的Microsoft SilverLight 1.3Silverlight 1.4Silv ...

  2. Linux下的Silverlight:Moonlight 1.0 Beta 1发布了

    Moonlight是微软Silverlight的一个开源实现,其目标平台是Linux与Unix/X11系统.自从2007年9月开始,Moonlight就在Mono项目下进行了开发,它是由Novell发 ...

  3. 一起谈.NET技术,初识Silverlight 4及其架构

    简介 Silverlight 4是今年早些时候发布的.这项技术为我们带来了许多革新.它不仅是为用户带来了丰富的交互式的互联网和多媒体内容,还为我们提供了强大的轻量级的平台.我们可以在此平台上开发可移植 ...

  4. 随便说说Silverlight

    Silverlight1.0马上就要发布了,为了尽快抢占Flash占有的网络多媒体市场吧,随着视频共享应用的火热,潜藏了太大的广告商机,当然还有在线休闲小游戏什么的,甚至广告本身就可以用Silverl ...

  5. 网上Silverlight项目收集

    1.Silverlight + OpenXML Video :This is a Silverlight proof of concept application that displays rand ...

  6. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日)

    分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日) 本周Silverlight学习资源更新 WIn2003部署Silverlight coo ...

  7. Silverlight 结构

    Silverlight 本主题介绍 Microsoft Silverlight 的基本结构和组件.Silverlight 不仅是一个漂亮的画布,可用来向最终用户显示丰富的交互式 Web 内容和媒体内容 ...

  8. silverlight | chrion.exe-动态语言创建silverlight

    看过文档后的总结 原文:http://silverlight.net/Quickstarts/ProgramDlr.aspx 1.安装silverlight SDK chrion 默认路径:C:/Pr ...

  9. Silverlight 2教程(四):Chiron.exe:Silverlight 2打包和动态语言部署工具

    VS在编译时Silverlight 2的应用程序时,会先将cs等文件进行编译成dll,然后会调用Chiron.exe这个打包工具打包成.xap文件.也可以使用它进行动态语言无打包部署.Chiron.e ...

最新文章

  1. 0.0 Introduction-机器学习笔记-斯坦福吴恩达教授
  2. 知乎回答多线程爬虫案例
  3. SQL_server_2000安装过程指导
  4. php basic syntax
  5. 人工神经网络——笔记摘抄1
  6. java中与接口类,Java中类与类、类与接口、接口与接口的关系
  7. HDU - 6333 Harvest of Apples
  8. Docker部署Ghost
  9. 配电室站房监控改造工程 环境辅助控制系统
  10. 地面波天线怎样能多收台_教你怎样挑选DTMB地面波天线
  11. 《大化传输网》学习笔记(三)————OTN系统的保护
  12. Linux 修改环境变量设置的三种方式
  13. shell脚本实现从master节点批量配置salve节点(主机名有瑕疵,IP映射,ssh服务)
  14. redis基础命令和数据操作命令学习笔记
  15. 25岁裸辞转行5G网络优化工程师:比盲目赶路更为重要的,是知道方向—分享优橙小故事
  16. 【MQTT基础篇(五)】发布、订阅和取消订阅
  17. 视频的上传及购买播放
  18. 那些年遇到的DB2大坑
  19. 6666端口,地址访问谷歌浏览器,火狐浏览器限制
  20. 陈卫军著赚钱思维正式出版,又一次颠覆商业大脑传统思维!

热门文章

  1. 掌机发展简史及未来趋势分析
  2. 一篇文章弄懂变压器的等效原理
  3. lesson 21 mad or not 是不是疯了-把什么逼疯,be driving sb mad,live near 住在什么附近,过去将来时的被动式 will be done
  4. MATLAB-实现太阳、地球、月亮三者之间运转关系的模拟
  5. Windows Azure Platform (九) Windows Azure Storage Service存储服务
  6. 团子杂记:SAP可持续化发展解决方案之产品碳足迹管理(PFM)简介
  7. ContentTypes
  8. DTU是什么及其用途
  9. ibm服务器安装ghostxp系统,windows xpsp3 ghost安装最实用的方法
  10. ppt转换pdf格式软件