标签:eof sharp class sass eth fun mst from asc
设置全局变量
setTitleDelegate = SetTitle;
alertDelegate = ShowMessage;
context = runtime.CreateContext();
JavaScriptContext.Current = context;
JavaScriptValue globalObject = JavaScriptValue.GlobalObject;
windowId = JavaScriptPropertyId.FromString("window");
JavaScriptValue window = JavaScriptValue.CreateObject();
var type = this.GetType();
var ps = type.GetProperties();
foreach (var p in ps)
{
if (p.GetMethod != null && p.GetMethod.IsPublic)
{
var v = p.GetValue(this) ?? "";
window.SetProperty(JavaScriptPropertyId.FromString(p.Name.ToLower()), JavaScriptValue.FromString(v.ToString()), true);
}
}
globalObject.SetProperty(windowId, window, true);
globalObject.SetProperty(JavaScriptPropertyId.FromString("set_Title"), JavaScriptValue.CreateFunction(setTitleDelegate, IntPtr.Zero), true);
globalObject.SetProperty(JavaScriptPropertyId.FromString("alert"), JavaScriptValue.CreateFunction(alertDelegate, IntPtr.Zero), true);
回调函数
private JavaScriptValue SetTitle(JavaScriptValue callee, bool isConstructCall, JavaScriptValue[] arguments, ushort argumentCount, IntPtr callbackData)
{
for (uint index = 1; index < argumentCount; index++)
{
Title = (arguments[index].ConvertToString().ToString());
}
return JavaScriptValue.Invalid;
}
调用代码
string script = scripts.Text;
JavaScriptValue window = JavaScriptValue.GlobalObject.GetProperty(windowId);
var jv = JavaScriptContext.RunScript(script);
var type = this.GetType();
var ps = type.GetProperties();
foreach (var p in ps)
{
if (p.SetMethod != null && p.SetMethod.IsPublic)
{
var id = JavaScriptPropertyId.FromString(p.Name.ToLower());
if (id != JavaScriptPropertyId.Invalid)
{
var v = window.GetProperty(id);
if (p.PropertyType.IsAssignableFrom(typeof(string)))
{
p.SetValue(this, v.ToString());
}
}
}
}
标签:eof sharp class sass eth fun mst from asc
原文地址:http://www.cnblogs.com/icoolno1/p/7534771.html