1.python调用C#的dll
C#代码
//放在py文件同级目录下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace simple
{
public class Class1
{
public static string StaticFun()
{
return "静态方法";
}
public static string Fun(string a)
{
return "普通方法" + a;
}
}
}
python代码
这里的clr是pythonnet模块的别名,不是clr模块,可以先卸载clr模块 pip uninstall clr。可能会有红色波浪线提示,不用管,运行不报错即可。
import clr
clr.AddReference("simple")
from simple import *
a = Class1.StaticFun()
b = Class1.Fun('b')
c = Class1().Fun('c')
print(a)
print(b)
print(c)
2.C#调用python代码
C#代码
需要安装IronPython,VS中安装步骤:工具-NuGet包管理器-管理解决方案的NuGet程序包
using System;
using System.Windows.Forms;
using IronPython.Hosting;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
namespace simple
{
public class Class1
{
public void Test()
{
ScriptRuntime pyRuntime = Python.CreateRuntime(); //创建一下运行环境
dynamic obj = pyRuntime.UseFile("test1.py"); //调用一个Python文件
string dd = obj.main('hello world'); //调用脚本文件中对应的函数
}
}
}
python代码
//放在\bin\Debug目录下
#coding = utf-8
def main(arr):
return arr
注意
当py文件需要第三方模块的时候,在C#中也要引入第三方模块,否则会报错No module named random
from random import randint # 随机函数
def main(arr):
try:
return str(randint(5, 10))
except Exception as err:
return str(err)