aardio 文档
aardio 范例: 调用 PowerShell
//调用 PowerShell
import win;
import console;
import dotNet.ps;
/*
dotNet.ps 在当前进程运行 PowerShell,
aardio / .Net(C#) / PowerShell 共享应用程序域,并共享导入的 .Net 程序集与类型。
*/
var compiler = dotNet.createCompiler("C#");
compiler.Source = /******
namespace CSharpLibrary
{
public class Object
{
//定义一个委托类型
public delegate int TestDelegateType(string str,int a);
//定义一个事件
public event TestDelegateType onTestEvent;
public int Test()
{
return onTestEvent("你好",123);
}
//PowerShell 5 不需要加这个函数
public static Object New(){return new Object(); }
}
}
******/
compiler.import("CSharpLibrary"); //编译 C# 代码并导入名字空间
var out,err = dotNet.ps( `
param($win) # 声明参数,类似 aardio 中 $win = ...
#PowerShell 里 :: 表示访问类的静态成员,New 用于创建对象
$obj = [CSharpLibrary.Object]::New() #低于 PowerShell 5 需要在类里增加 New 函数或改用 New-Object
# 添加事件,注意下面方括号里是强制类型转换
$obj.add_onTestEvent( {
param($str,$a) # 声明参数
# PowerShell 会把所有语句的默认输出塞进返回值,改为赋值语句可避免这个问题
$temp = $win.InvokeMember("msgbox","事件被回调了",$str)
# return 语句只能改最后一个返回值,与其他语言有较大区别
return $a
})
$obj.Test()
`,{win = dotNet.ps.export(win)});
console.log(out,err);
console.pause(true);
Markdown 格式