zoukankan      html  css  js  c++  java
  • Script.NET实现脚本库

      Script.NET本身没有实现调用脚本库的功能。如果将一堆已经定义好的函数放在一个脚本文件里头作为脚本库,要调用这个脚本库时只需要稍作改动就行。

    首先建立一个XML文档专门存放哪个脚本会调用哪些库,结构如下

    <?xml version="1.0" encoding="utf-8" ?>
    <LibMapping>
      <MainScript scriptName="">
        <LibScript libFileName=""/>
      </MainScript>
    </LibMapping>

    例如:

    <?xml version="1.0" encoding="utf-8" ?>
    <LibMapping>
      <MainScript scriptName="script1.txt">
        <LibScript libFileName="lib1.txt"/>
        <LibScript libFileName="lib3.txt"/>
      </MainScript>
      <MainScript scriptName="script2.txt">
        <LibScript libFileName="lib1.txt"/>
        <LibScript libFileName="lib2.txt"/>
      </MainScript>
    </LibMapping>

    然后在执行脚本之前分析XML,通过scriptName属性找出它需要调用的脚本库,利用IO操作读取脚本库文件并添加到脚本的字符串中,代码如下

                string script = string.Empty;
                script += File.ReadAllText("script1.txt")+"\n";//读取脚本文件
                
                string libScript = string.Empty;
                //分析XML文件
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("LibMapping.xml");
                XmlNode mainNode = xmlDoc.SelectSingleNode(string.Format("//LibMapping/MainScript[@scriptName='{0}']", "script1.txt"));
                if (mainNode != null)
                {
                    XmlNodeList libList = mainNode.ChildNodes;
                    //读取脚本库
                    foreach (XmlNode node in libList)
                    {
                        string fileName = node.Attributes["libFileName"].Value;
                        libScript += File.ReadAllText( fileName) + "\n";
                    }
                }
                script+= libScript;
    Script s = Script.Compile(script);

    这样做的弊端是调试时不方便,如果脚本代码出错或有异常,简单的字符串拼接会使出错代码的行数有可能不正确,查找错误代码时有困难,希望有哪位大侠给出更好的解决办法。

  • 相关阅读:
    每日编程-20170322
    每日编程-20170321
    C++primer拾遗(第七章:类)
    每日编程-20170320
    uniApp之 顶部选项卡
    vue 服务端渲染 vs 预渲染(1)
    uni-app学习笔记
    如何解决vue跨域的问题
    简单整理数组的用法
    vue-cli
  • 原文地址:https://www.cnblogs.com/HopeGi/p/2722308.html
Copyright © 2011-2022 走看看