import win.ui;
/*DSG{{*/
var winform = ..win.form( bottom=399;parent=...;text="aardio Form";right=599 )
winform.add(
edit={ right=389;bottom=200;text="edit";left=114;multiline=1;top=87;z=1;edge=1;cls="edit" }
)
/*}}*/
import console;
console.open()
import dotNet;
var clr,err = dotNet.clr( "v2.0" );
if( !clr ){
console.log("当前系统未安装.Net Framework 2.0", err )
return;
}
//创建应用程序域
var appDomain = clr.createAppDomain();
//创建C#语言编译器
var compile = appDomain.createCompiler("C#");
compile.Reference("System.dll")
//设置待编译C#源码
compile.Source = /******
using System.Reflection;
namespace CSharpLibrary
{
public class aardioTable
{
private object tObject;
public aardioTable(object obj){
tObject = obj;
}
public object GetProperty(string k){
return tObject.GetType().InvokeMember("属性名", BindingFlags.GetProperty, null, tObject, null);
}
public void SetProperty(string k,object v){
tObject.GetType().InvokeMember(k, BindingFlags.SetProperty, null, tObject, new object[] { v });
}
public object InvokeMember(string k,params/*不定个数参数*/ object[] arg ){
return tObject.GetType().InvokeMember(k, BindingFlags.InvokeMethod, null, tObject, arg );
}
}
public class CSharpObject
{
public object Hello( object comObject ){
aardioTable tab = new aardioTable( comObject );
tab.SetProperty( "属性名",456 ) ;
tab.InvokeMember( "执行aardio","winform.edit.text = 'aaa';" );
return tab.GetProperty("属性名");
}
}
}
******/
//编译并返回程序集
var assembly = compile.Compile()
if(!assembly){
..io.print(compile.getLastError());
appDomain.unload();
return ;
}
//调用程序集创建类对象
var cSharpObject = assembly.CreateInstance("CSharpLibrary.CSharpObject")
//调用实时编译的C#函数
var ret = cSharpObject.Hello( {
属性名 = 123;
执行aardio = function( code ){
loadcode(code)();
}
} );
winform.show()
win.loopMessage();