2013-07-30 152 views
1

如果我有一個帶有out參數的C#函數,當從javascript調用時,我無法獲取out參數。這可能嗎?在JavaScript中調用帶有輸出參數的C#庫函數

例如...

public class Test 
{ 
    public bool function doSomething(string txt, out string retTxt) 
    { 
     ... 
     retTxt = "some return value"; 
     return true; 
    } 
} 

Javascript代碼..

var outStr; 
    var ret = testInstance.doSomething("instr", outStr); 
+0

我不認爲JavaScript支持輸出參數。 – David

+0

@David,你所要做的就是傳入一個對象,該對象可以被該函數修改。 – Brad

回答

0

出以這種方式使用的參數是不是一個好主意。如果你調用一個方法,你會期望它能夠完成它的工作,如果它不能實現它的話,但是如果你確實需要這個方法,那麼你可以把你的輸出包裝到一個類中並返回它。在這種情況下,如果使用dot net 4.0或更高版本,則可以使用匿名類型。

public class Test 
{ 
    public object doSomething(string txt) 
    { 
     ... 
     return new 
     { 
      text = "some return value", 
      success = true 
     }; 
    } 
} 


var result = testInstance.doSomething("instr"); 
// result.text 
// result.success 
+0

謝謝你的建議,雖然我們不能因強類型返回匿名類型,但我決定定義類型。 – lee23

1

official msdn documentation將參數修飾符定義爲「導致參數通過引用傳遞」。通過引用傳遞意味着你正在傳遞變量的內存位置,這在客戶端/服務器的情況下是不可能的。

+0

它可能不一定是客戶端/服務器的情況。例如,它可能是Windows應用商店中JavaScript代碼使用的C#庫。 – David

+0

爲真,但即使在這種情況下,C#庫和JavaScript庫也不共享內存位置。 – Claies

相關問題