Я пытаюсь использовать edge.js для использования модуля node.js в C#.метод вызова с C# в модуле node.js с помощью edge.js
Я могу получить доступ к свойству модуля, но не к методу.
using System;
using System.Threading.Tasks;
using EdgeJs;
class Program
{
static void Main(string[] args)
{
Start().Wait();
}
public static async Task Start()
{
var func = Edge.Func(@"return require('../require.js')");
var invoke = func.Invoke(new { });
var require = (dynamic)invoke.Result;
Console.WriteLine(require.answer1); // answer 1
var deleg = require.answer2;
Console.WriteLine(deleg);
var task = deleg.Invoke(1);
Console.WriteLine(task);
// var result = await task.Run(); // error
// Console.WriteLine(result);
}
}
require.js
module.exports = function (data, callback) {
var module = require('./module');
var result = module;
callback(null, result);
};
module.js
exports.answer1 = "answer 1";
exports.answer2 = function() {
return "answer 2";
};
Есть ли способ, я могу вызвать функцию в node.js из C# и доступ к "ответ 2"?
Здесь ошибка:
answer 1
System.Func`2[System.Object,System.Threading.Tasks.Task`1[System.Object]]
System.Threading.Tasks.Task`1[System.Object]
Unhandled Exception: System.AggregateException: One or more errors occurred. ---
> Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: No overload for method
'Run' takes '0' arguments
at CallSite.Target(Closure , CallSite , Object)
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T
0 arg0)
at Program.<Start>d__d.MoveNext() in c:\Users\admin\Documents\Visual Studio 2
013\Projects\snippets\snippets\Program.cs:line 26
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceled
Exceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationTo
ken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at Program.Main(String[] args) in c:\Users\admin\Documents\Visual Studio 2013
\Projects\snippets\snippets\Program.cs:line 10
Press any key to continue . . .
Что 'Console.WriteLine (deleg)' производить? – CodingGorilla
System.Func'2 [System.Object, System.Threading.Tasks.Task'1 [System.Object]] – David
«Нет перегрузки для метода« Выполнить »принимает« 0 »аргументы» означает, что я думаю, что отсутствуют аргументы, но У метода node.js нет аргументов, поэтому я не понимаю, какие аргументы следует отправлять. – David