C# IronPython 交互操作(DLR)

本文介绍了一个简单的C#与IronPython互操作的例子,利用DLR(动态语言运行时)在C#应用程序中使用脚本。通过创建一个名为CTest的类,实现了从C#到Python的变量读取和修改,展示了C#与动态语言集成的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然刚刚才开始学习使用C#,个人感觉还是比较不错。除去部署的原因、迟缓的VS2010,使用C#来开发应用程序是一种享受。

为了扩展应用程序,一般都需要在应用程序中使用脚本。IronPython给在C#应用程序使用脚本提供了方便的操作。

当然归结底是因为DLR(动态语言运行时,Dynamic Language Runtime),它是用来向 CLR 中添加了一组专门用于满足动态语言需要的服务。

下面是一个简单的例子:


/*
 * 这是一个C#与IronPython互操作的小例子(DLR的应用)
 * 历史
 *         2012-06-08        创建        姚彧
 * 依赖
 *         IronPython, Microsoft.Scripting
 * 要求
 *         对象类必须有Public定义
 * 版权:
 *         学习用, 欢迎拷贝

 */
using System;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

namespace dscj.study.dlr
{
    public class CTest
    {
        public static void Main(string[] args)
        {
            CTest aProgram = new CTest(@"从C#来"10);
            ScriptEngine aScriptEngine = Python.CreateEngine();
            ScriptScope aScriptScope = aScriptEngine.CreateScope();
            aScriptScope.SetVariable("aProgram", aProgram);
            Console.WriteLine("未调用脚本前 Name={0}, Age={1}", aProgram.Name, aProgram.Age);
            ScriptSource aScriptSource = aScriptEngine.CreateScriptSourceFromString(@"aProgram.Name='在Python中修改';aProgram.Age=33");
            aScriptSource.Execute(aScriptScope);
            Console.WriteLine("调用脚本后 Name={0}, Age={1}", aProgram.Name, aProgram.Age);
            Console.ReadKey(true);
        }

        public string Name;
        public int Age;
        public CTest(string name, int age)
        {
            this.Name = name;
            this.Age = age;
        }        
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值