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);

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

  • 相关阅读:
    java.lang.UnsatisfiedLinkError: No implementation found for
    target release 1.5 conflicts with default source release 1.7
    (转)makefile里PHONY的相关介绍
    Hint: A potential Change-Id was found, but it was not in the footer (last paragraph) of the commit message
    linux jdk版本随时切换
    提高Service的优先级
    第一章、数字图像的描述
    gluas图形处理——导读
    图像处理学习过程——网站,视频,书籍(长期更新)
    基数排序
  • 原文地址:https://www.cnblogs.com/HopeGi/p/2722308.html
Copyright © 2011-2022 走看看