zoukankan      html  css  js  c++  java
  • IronPython 与 .NET 交互

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
    using IronPython.Hosting;
    using Microsoft.Scripting.Hosting;
    
    namespace WindowsFormsApplication3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                if (tbxCode.Text.Trim().Length == 0) return;
    
                try
                {
                    ScriptEngine engine = Python.CreateEngine();
                    //加载必须的程序集
                    engine.Runtime.LoadAssembly(Assembly.GetAssembly(typeof(example)));
                    dynamic result = engine.Execute(tbxCode.Text);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication3
    {
        public class example
        {
            public int Add(int m, int n)
            {
                return m + n;
            }
    
            public int Sub(int m, int n)
            {
                return m - n;
            }
    
            public string AddStr2(string a, string b)
            {
                return a + b;
            }
    
            public static string AddStr(string a, string b)
            {
                return a + b;
            }
    
            public void WriteText(string text)
            {
                string file = Application.StartupPath + "/log.txt";
                using (StreamWriter writer = new StreamWriter(file, true))
                {
                    writer.WriteLine(text);
                }
            }
        }
    }

    Python中调用C#中的代码如下:

    from WindowsFormsApplication3 import example
    s1 = example.AddStr("old","test")
    e = example()
    s2 = e.AddStr2("cool","girl")
    e.WriteText(s1)
    e.WriteText(s2)

    界面如下:

    代码比较简单,做备忘之用。

    IronPython 下载地址 : http://ironpython.codeplex.com/

    Python Vs2012的插件下载地址:http://pytools.codeplex.com/

  • 相关阅读:
    CSS实现水平居中的5种思路
    html5遵循的5个设计原则
    HTML5标签嵌套规则
    动画animation的三个应用(漂浮的白云、旋转的星球、正方体合成)
    深入理解CSS动画animation
    深入理解CSS径向渐变radial-gradient
    深入理解CSS线性渐变linear-gradient
    动态更新语句,时间精度丢失
    反射类的构造数
    在ASP.NET MVC中使用Grid.mvc
  • 原文地址:https://www.cnblogs.com/bruceleeliya/p/2948201.html
Copyright © 2011-2022 走看看