如何在C#中使用IronPython


如何在C#中使用IronPython,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。新建一个项目,ConsoleApplication然后NuGet添加IronPython包在Main函数中编写如下代码:这里用到了三个主要类型:ScriptEngine, ScriptScope, ScriptSource顾名思义ScriptEngine是引擎,ScriptScope相当于一个容器可用于传递一些自定义的变量,ScriptSource就是脚本源码。运行后输出结果:Hello world!将上面的代码修改如下输出结果变为:Hello 123还可以试试更奇妙的,比如C#定义一个类传入这个变量试试,修改Main函数的代码成功输出:Hello 阿萨德那么如果调用Foo里的方法呢?可以哦,你可以试一试,还能够命中断点呢!将script字符串替换为文件路径,使用ScriptEngine的CreateScriptSourceFromFile方法可以执行文件格式的IronPython新建文件,名为test.py, 将上面的script字符粘贴到文件内。修改文件的属性为“如果较新则复制”。那么Main函数的代码段就是:执行成功,输出结果不变。但是此时编辑器对py文件的支持是木有的,此时可以安装一个插件,Python Tools for Visual Studio 简称PTVS,可以在GitHub上获取到:https://github.com/Microsoft/PTVS/releases安装之后,就有了语法高亮和智能提示哦~这个工具增加了很多对Python的支持,你还能在新建项目中看到新增的Python模板,包括了Django等一些流行的Python网站模板,当然IronPython的模板也是不可少的。还有一个问题,刚才在foo中定义了Birthday这个属性,但是它的类型是DateTime,如何在IronPython中使用它呢?修改test.py文件中的代码这里我使用了from System import DateTime这行语句就引入了DateTime的类型同样的,你也可以引入System程序集中的String、TimeSpan等类型,方便得一塌糊涂,比如这样from System import *如果需要添加程序集引用呢?比如我新建了一个类库,将Foo类放到了这个新的类库中,那么我要使用Foo的时候,只要这样:或许你的程序将告诉你一个找不到Module的错误,那就把Foo.dll拷贝到你的执行目录下。或者你也可以修改Main函数中的代码,使用engine.SetSearchPaths(new[]{@”../Foo/bin/Debug”});设置查找类库的路径。如果报告无法在Foo中找到Foo类型,那就是你拷贝Foo类的代码到类库中去的时候没 香港云主机有使用Foo类库的namespace。现在已经知道了如何在C#中使用IronPython,以及在IronPython的代码中使用C#的类型和变量传递,那么就可以在你的C#程序中加入炫酷的脚本语言动态特性了。关于CreateScriptSource的时机,你或许可以使用FileSystemWatcher类来监视文件修改,不过要注意多线程问题哦。如果你并不需要在C#中加入IronPython,而仅仅只是想要用Python一样的语法来做一些.net的程序比如winform、wpf之类的,你可以安装IronPython的安装包,安装包在最上面给出的官网地址中有下载。安装之后将获得IronPython单独运行的环境和相关的文档。然后你就可以通过PTVS帮你新增的几个IronPython项目模板来创建你的IronPython程序了。而且,他们是支持断点调试的哦!你是不是有了好点子呢,比如在C#项目中使用Link文件来链接IronPython项目中的py文件,关于如何在C#中使用IronPython问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注开发云行业资讯频道了解更多相关知识。

相关推荐: 笔记本电脑内存条怎么安装

这篇文章主要介绍“笔记本电脑内存条怎么安装”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“笔记本电脑内存条怎么安装”文章能帮助大家解决问题。笔记本内存条安装注意事项:1、安装笔记本内存条把电脑反过来放的时候,要注意下面放…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/14 16:46
下一篇 08/14 16:47

相关推荐