日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SilverlightDLR輕松實(shí)現(xiàn)動(dòng)態(tài)語(yǔ)言編寫

Silverlight開發(fā)工具是一個(gè)非常深?yuàn)W的應(yīng)用工具。其中包含有許多特性值得我們?nèi)ド钊氲难芯?。要想很好的使用這款工具幫助我們完成各種功能的實(shí)現(xiàn),就需要在實(shí)際編程中去慢慢積累經(jīng)驗(yàn)。Silverlight DLR是Silverlight中提供的一套非常強(qiáng)大的動(dòng)態(tài)語(yǔ)言運(yùn)行時(shí)。目前2.0 beta2中支持Python,Ruby和JSX。#t#

利用Silverlight DLR,你可以很方便的使用熟悉的動(dòng)態(tài)語(yǔ)言編寫Silverlight程序。本文主要介紹如何在托管語(yǔ)言中調(diào)用動(dòng)態(tài)語(yǔ)言。首先,我們需要初始化動(dòng)態(tài)語(yǔ)言的環(huán)境配置,從中獲取所有可以使用的動(dòng)態(tài)語(yǔ)言列表,然后得到相應(yīng)動(dòng)態(tài)語(yǔ)言的運(yùn)行引擎。

  1. ScriptRuntimeSetup setup = new Script
    RuntimeSetup(true);
  2.  //true表示載入所有支持的動(dòng)態(tài)語(yǔ)言的環(huán)境配置  
  3. ScriptRuntime runtime = ScriptRuntime.
    Create(setup);
  4.  //創(chuàng)建動(dòng)態(tài)語(yǔ)言運(yùn)行環(huán)境  
  5. foreach (LanguageProviderSetup langSetup
     in setup.LanguageProviders) 
  6. //遍歷所有動(dòng)態(tài)語(yǔ)言的環(huán)境配置  
  7. {  
  8. try  
  9. {  
  10. ScriptEngine engine = null;  
  11. if (runtime.TryGetEngine(langSetup.
    Names[0], out engine)) 
  12. //嘗試獲取動(dòng)態(tài)語(yǔ)言的運(yùn)行引擎  
  13. {  
  14. //engine就是我們需要的運(yùn)行引擎  
  15. }  
  16. }  
  17. catch (MissingTypeException) 
  18. //處理創(chuàng)建不支持的動(dòng)態(tài)語(yǔ)言時(shí)可能拋出異常  
  19. {  
  20. }  

Silverlight DLR獲取了運(yùn)行引擎后,我們就可以執(zhí)行動(dòng)態(tài)語(yǔ)言的代碼了

 
 
 
  1. public class MyErrorSink : ErrorSink
     //編譯錯(cuò)誤處理  
  2. {  
  3. IList m_ErrorMsg = new List
    ();  
  4. public IList ErrorMsg  
  5. {  
  6. get { return m_ErrorMsg; }  
  7. }  
  8. public MyErrorSink()  
  9. {  
  10. }  
  11. public virtual void Add(SourceUnit 
    source, string message, SourceSpan 
    span, int errorCode, Severity severity)  
  12. {  
  13. if (severity == Severity.Error || 
    severity == Severity.FatalError)  
  14. {  
  15. m_ErrorMsg.Add(message);  
  16. }  
  17. }  
  18. }  
  19. LanguageContext langContext =
    HostingHelpers.GetLanguageContext(engine);  
  20. SourceUnit sourceUnit = langContext.
    CreateSourceUnit(new SourceStringContent
    Provider("1/4+3"), null, SourceCodeKind
    .Expression); //創(chuàng)建代碼序列:1/4+3  
  21. MyErrorSink errorSink = new MyErrorSink();  
  22. try  
  23. {  
  24. Scope scope = new Scope();  
  25. object ret = sourceUnit.Execute(scope, 
    errorSink); //執(zhí)行動(dòng)態(tài)語(yǔ)言代碼,
    ret就是執(zhí)行結(jié)果的返回值了  
  26.  
  27. if (errorSink.ErrorMsg.Count > 0) 
    //檢查編譯錯(cuò)誤  
  28. {  
  29. //  
  30. }  
  31. }  
  32. catch (Exception)  
  33. {  

Silverlight DLR的簡(jiǎn)單應(yīng)用就為大家介紹到這里。


網(wǎng)站欄目:SilverlightDLR輕松實(shí)現(xiàn)動(dòng)態(tài)語(yǔ)言編寫
網(wǎng)頁(yè)URL:http://www.5511xx.com/article/cceehep.html