2011-08-30 64 views
5

Tôi chỉ cần tải xuống Iron JS và sau khi thực hiện một số 2/3 chương trình đơn giản bằng cách sử dụng phương thức Execute, tôi đang xem xét phương thức ExecuteFile.Cách gọi hàm được viết trong tệp javascript từ C# bằng cách sử dụng IronJS

Tôi có một tập tin test.js có nội dung như dưới

function Add(a,b) 
{ 
    var result = a+b; 
    return result; 
} 

Tôi muốn gọi như vậy từ C# sử dụng sắt JS. Làm thế nào tôi có thể làm như vậy? Mã của tôi cho đến nay

var o = new IronJS.Hosting.CSharp.Context(); 
dynamic loadFile = o.ExecuteFile(@"d:\test.js"); 
var result = loadFile.Add(10, 20); 

Nhưng biến loadfile là null (đường dẫn là đúng) ..

Làm thế nào để gọi chức năng JS, xin vui lòng giúp đỡ ... Cũng tìm kiếm trong google mang lại không giúp đỡ.

Cảm ơn

+0

Tôi đã sửa đổi câu trả lời của mình để làm việc với gói NuGet. Câu trả lời trước của tôi dựa trên nhánh chính hiện tại của chúng tôi. Tôi đã quên rằng những thứ năng động chưa có trong NuGet. –

+0

Chỉnh sửa của bạn đã hoàn toàn thay đổi câu hỏi và cũng khiến câu hỏi trở nên vô giá trị. Tôi đã quay lại phiên bản gốc. Nếu bạn muốn quay trở lại phiên bản của bạn, đó là sự lựa chọn của bạn, nhưng tôi, cho một, sau đó sẽ bỏ phiếu để đóng câu hỏi là "Không phải là một câu hỏi thực sự". –

+0

Có, nó đã xảy ra do nhầm lẫn .. cảm ơn vì đã lăn nó trở lại. – learner123

Trả lời

6

Kết quả thực hiện sẽ không có giá trị, vì tập lệnh của bạn không trả lại bất kỳ thứ gì.

Tuy nhiên, bạn có thể truy cập đối tượng "hình cầu" sau khi tập lệnh đã chạy để lấy hàm.

var o = new IronJS.Hosting.CSharp.Context(); 
o.ExecuteFile(@"d:\test.js"); 
dynamic globals = o.Globals; 

var result = globals.Add(10, 20); 

EDIT: Đó là phiên bản đặc biệt sẽ làm việc với các chi nhánh chủ hiện tại, và trong một bản phát hành sắp tới, nhưng không khá gì chúng tôi đã làm việc với các gói NuGet. Phiên bản tiết kiệm hơn một chút hoạt động với phiên bản IronJS 0.2.0.1 là:

var o = new IronJS.Hosting.CSharp.Context(); 
o.ExecuteFile(@"d:\test.js"); 
var add = o.Globals.GetT<FunctionObject>("Add"); 

var result = add.Call(o.Globals, 10D, 20D).Unbox<double>(); 
+0

Thưa ông, 1 câu hỏi (tôi không biết nếu nó có liên quan đến yêu cầu), khi nào Iron JS sẽ được phát hành chính thức? – learner123

+0

Fredrik Holmstrom sẽ là người yêu cầu, nhưng bạn có thể xem xét các bản phát hành trên NuGet là "được hỗ trợ", trong đó chúng tôi cố gắng rất tích cực trong việc khắc phục các vấn đề và xuất bản các bản cập nhật. –

Các vấn đề liên quan