`
lovecontry
  • 浏览: 1095183 次
文章分类
社区版块
存档分类
最新评论

IronPython脚本调用C#dll示例

 
阅读更多

上两篇IronPython脚本的文章介绍了与C#紧密结合的示例,这里还将提供一个与C#结合更紧密的示例,直接调用C#编写的DLL。

我们还是沿用了上篇文章的代码(其实这里可以直接使用IronPython调试器进行联调了,没有必要再嵌入到C#了)

注意:scriptEngine.AddToPath(Application.StartupPath);这句代码比较关键,设定dll文件所在的目录。

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingIronPython.Hosting;

namespaceTestIronPython
{
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}

privatevoidbutton1_Click(objectsender,EventArgse)
{
PythonEnginescriptEngine
=newPythonEngine();
scriptEngine.AddToPath(Application.StartupPath);

scriptEngine.Execute(textBox1.Text);
}
}
}

开始编写可供IronPython脚本调用的DLL,我们编写了两个类,一个提供静态函数访问,另一个提供属性和普通函数访问,以区别在IronPython脚本不同调用的方式。代码如下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;

namespaceIronPython_TestDll
{
publicclassTestDll
{
publicstaticintAdd(intx,inty)
{
returnx+y;
}
}

publicclassTestDll1
{
privateintaaa=11;
publicintAAA
{
get{returnaaa;}
set{aaa=value;}
}
publicvoidShowAAA()
{
global::System.Windows.Forms.MessageBox.Show(aaa.ToString());
}

}
}

下面再让我们看看IronPython脚本中的代码吧:

importclr
clr.AddReferenceByPartialName(
"System.Windows.Forms")
clr.AddReferenceByPartialName(
"System.Drawing")
fromSystem.Windows.Formsimport*
fromSystem.Drawingimport*

clr.AddReferenceToFile(
"IronPython_TestDll.dll")
fromIronPython_TestDllimport*

a
=12
b
=6
c
=TestDll.Add(a,b)
MessageBox.Show(c.ToString())

td
=TestDll1()
td.AAA
=100
td.ShowAAA()

比较关键的是这两句:

clr.AddReferenceToFile("TronPython_TestDll.dll")--加载DLL文件
fromTronPython_TestDllimport* -- 导入命名空间

静态方法可以直接调用,普通方法需要先定义类,再访问(和访问IronPython
自己本身的类没有任何区别)。

运行结果如下:

现在你是否对IronPython充满期待和兴趣了吧,动起手来,感受它的强大!

分享到:
评论

相关推荐

    VS2010调用IronPython脚本的示例代码

    在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010) 中使用C# 4.0来调用IronPython脚本,这是一个强大的动态语言运行时,能够让我们在.NET环境中执行Python代码。IronPython使得C#开发者能够轻松地利用...

    C# 调用Python脚本.zip

    总之,C#通过IronPython库调用Python脚本为开发者提供了极大的灵活性,可以在.NET应用程序中利用Python的强大力量。这个压缩包提供的示例代码和相关库正是为了帮助开发者快速入门这一技术。在实际开发中,根据具体...

    C#调用Python实例

    在提供的压缩包`NetPythonDemo`中,可能包含了一个简单的C#项目示例,演示了如何调用Python脚本。分析这个示例可以帮助你更好地理解上述概念,并在自己的项目中实现类似的功能。 总的来说,C#调用Python涉及多个...

    在VS2017中用C#调用python脚本的实现

    接着,文中介绍了在C#程序中调用Python脚本进行POST请求的示例。这涉及到对网络请求的处理,以及如何将请求结果返回给C#程序。由于Python脚本中使用了requests包,所以需要确保这个包在当前使用的Python环境中已安装...

    使用C#将IronPython嵌入WPF中

    在本文中,我们将深入探讨如何使用C#将IronPython脚本引擎嵌入到Windows Presentation Framework (WPF)应用程序中,从而实现动态编程和交互性增强的功能。 IronPython是一种开源的Python实现,它允许在.NET ...

    Python调用.NET库的方法步骤

    3. 示例代码分析:作者展示了如何在Python中使用IronPython调用.NET库中的方法。例如,通过clr模块(Common Language Runtime)导入.NET的命名空间,并通过clr.Reference来创建.NET对象的引用。这些引用对于传递引用...

    至今的所有Demos Ciallo~(∠・ω< )⌒☆

    5. **跨语言交互**:如果有的项目涉及到两者结合,可能会看到如何在C#中调用Python脚本(如IronPython),或者在Python中通过Ironclad或ctypes库调用C# DLL。 6. **版本控制**:可能还包含版本控制系统如Git的使用,...

    ttf 气象字体制作

    此外,MeteoInfo还支持IronPython脚本编程,进一步增强了其数据分析的能力,使得复杂的气象数据处理任务变得简单可行。 #### 二、安装与运行MeteoInfo MeteoInfo的安装过程简单明了,只需从官方网站下载安装文件并...

Global site tag (gtag.js) - Google Analytics