利用noesis.Javascript开源组件.Net中执行javascript脚本
利用noesis.Javascript开源组件.Net中执行javascript脚本
发布时间:2017-01-07 来源:查字典编辑
摘要:界面如下:然后,clickfilterbutton后的UI:看,筛选出来了,代码如下(js能调C#写的UserInfo类的各个属性)复制代码...

界面如下:

利用noesis.Javascript开源组件.Net中执行javascript脚本1

然后,click filter button后的UI:

利用noesis.Javascript开源组件.Net中执行javascript脚本2

看,筛选出来了,代码如下(js能调C#写的UserInfo类的各个属性)

复制代码 代码如下:

public class UserInfo

{

public string FirstName { get; set; }

public string LastName { get; set; }

public int Age { get; set; }

public override string ToString()

{

return string.Format("{0}, {1}: {2}", FirstName, LastName, Age);

}

}

private void btnSearch_Click(object sender, EventArgs e)

{

List<UserInfo> users = FilterUsers(txtFilter.Text.Trim());

lstUsers.DataSource = users;

}

private List<UserInfo> FilterUsers(string jsFilter)

{

List<UserInfo> results = new List<UserInfo>();

if (jsFilter.Trim().Length == 0)

return this.users;

try

{

using (JavascriptContext context = new JavascriptContext())

{

foreach (UserInfo user in this.users)

{

context.SetParameter("user", user);

context.SetParameter("isInclude", false);

string js = string.Format(@"

if({0})

isInclude=true;

else

isInclude=false;", jsFilter);

context.Run(js);

bool isInclude = (bool)context.GetParameter("isInclude");

if (isInclude)

results.Add(user);

}

}

}

catch

{

txtFilter.Focus();

txtFilter.SelectAll();

return this.users;

}

return results;

}

我们来看看效率:

复制代码 代码如下:

private void btnTest_Click(object sender, EventArgs e)

{

using (JavascriptContext context = new JavascriptContext())

{

Stopwatch sw = new Stopwatch();

sw.Start();

int i=1000000;

while(i-- > 0)

{

context.SetParameter("ii", 1);

context.SetParameter("jj", 2);

context.SetParameter("sum", 0);

string js = string.Format(@"sum=ii+jj;");

context.Run(js);

int sum = (int)context.GetParameter("sum");

}

sw.Stop();

long useJS_Total = sw.ElapsedMilliseconds;

float useJS_Average = ((float)sw.ElapsedMilliseconds) / 1000000;

sw.Reset();

sw.Start();

i = 1000000;

while (i-- > 0)

{

int ii = 1;

int jj = 2;

int sum = 0;

sum = ii + jj;

}

sw.Stop();

long nouseJS_Total = sw.ElapsedMilliseconds;

float nouseJS_Average = ((float)sw.ElapsedMilliseconds) / 1000000;

string msg = "";

msg += string.Format("useJS_Total: {0}rn", useJS_Total);

msg += string.Format("useJS_Average: {0}rnrnrn", useJS_Average);

msg += string.Format("nouseJS_Total: {0}rn", nouseJS_Total);

msg += string.Format("nouseJS_Average: {0}rnrnrn", nouseJS_Average);

MessageBox.Show(msg);

}

}

结果(上面的是通过js引擎计算的时间、下面的是纯C#计算时间,悲剧啊):这个Noesis.Javascript只适用于性能要求不高的场合

利用noesis.Javascript开源组件.Net中执行javascript脚本3

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类