在Nodejs中如何调⽤C#的代码
最近需要在Nodejs中⽤到C#的代码,从⽹上了解到可以采⽤Edgejs来实现Nodejs与C#的代码交互,
直接复制⽹上的代码运⾏总是出各种错,填了不少坑,现在把⾃⼰的案例代码⼤致整理⼀下,⽅便以后⾃⼰查询。
⼀、安装
运⾏命令⾏(CMD),进⼊当前项⽬的⽬录,执⾏命令“npminstalledge”进⾏安装。(这⾥也可以选择全局安装,具体操作就不说了)
⼆、调⽤
在⽤和C#代码交互的时候,有三种⽅式:
1.第⼀种⽅式是将c#的代码封装成dll,然后在nodejs⾥⾯调⽤
代码⽰例如下:
Nodejs:
//引⼊Edge模块varedge=require('./node_modules/edge');
//定义⽅法varStudyMath=({
asmblyFile:'../../_lib/',//asmblyFile为dll路径
atypeName:'',//RockyNamespace为命名空间,Study为类名
methodName:'StudyMath'//StudyMath为⽅法名});
//s为传递⽅法传递的参数,result为⽅法返回的结果
StudyMath(s,function(error,result){
if(error)throwerror;
if(0==result)
;//Succesl
;//Failure
});
C#:
namespaceRockyNamespace
{
publicclassStudy
{
//C#中,⽅法必须⽤async异步修饰,且返回值必须为Task
publicasyncTask
{
//⽅法体
return0;
}
}
}
2.第⼆种⽅式是将c#的代码⽤async处理后直接在nodejs中书写:
代码⽰例如下:
Nodejs:
varedge=require('./node_modules/edge');
varStudyMath=(function(){/*
//tion;
c;
async(input)=>{
//⽅法体
return0;
}
*/});
//s为传递⽅法传递的参数,result为⽅法返回的结果
StudyMath(s,function(error,result){
if(error)throwerror;
if(0==result)
;//Success
el
;//Failure
});
3.第三种⽅式是第⼀种和第⼆种的结合
代码⽰例如下:
Nodejs:
varedge=require('./node_modules/edge');
varStudyMath=(function(){/*
c;
;
namespaceRockyNamespace
{
publicclassStartup
{
//C#中,⽅法必须⽤async异步修饰,且返回值必须为Task
publicasyncTask
{
//⽅法体
return0;
}
}
}
*/});
//s为传递⽅法传递的参数,result为⽅法返回的结果
StudyMath(s,function(error,result){
if(error)throwerror;
if(0==result)
;//Success
el
;//Failure
});
需注意的是,采⽤第三种⽅式的时候,必须将类名命名成Startup,⽅法名命名为Invoke,
因为在edge内部中,会默认将typeName定义为Startup,将methodName定义为Invoke
类似如下的定义:
varfunc=({
typeName:'Startup',
methodName:'Invoke'
});
Edgejs官⽹:
这⾥推荐⼀篇写的⽐较详细的⽂章:
本文发布于:2022-11-27 11:53:58,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/30841.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |