2016-09-15 23 views
0

我的BizTalk不管的functoid返回布爾值true傳遞我有我的BizTalk應用程序的問題

我已經定製了functoid的基礎上,已收到了她的布爾改變值碼

public string GetBoolMark(bool param1) 
     { 
      string returnValue = "0"; 
      if (param1 == true) 
      { 
       returnValue = "1"; 
      } 
      return returnValue; 
     } 

我有一個問題,該值總是返回真值。我正在使用BizTalk服務器2013 R2

+0

是的,BizTalk 2013及以上的已知問題,做Gary建議並將它們視爲字符串 – Dijkgraaf

+0

堅持,就像我在其他線程中提到的那樣,我們需要知道源節點的類型。是的,它可以有所作爲。 –

+0

查看BizTalk Server 2013中的已知問題https://support.microsoft.com/en-gb/kb/2954101 XSLCompiledTransform中的已知問題 – Dijkgraaf

回答

0

將參數1的類型從布爾更改爲字符串。 仔細解析它,你的函數是一個布爾值,並使用該布爾值來決定返回的內容。

public string GetBoolMark(string param1) 
    { 
     bool condition; 
     string returnValue = "0"; 

     if (bool.TryParse(param1, out condition) && condition) 
     { 
      returnValue = "1"; 
     } 
     return returnValue; 
    } 

在腳本functoid中使用內聯C#時,我總是發現更容易假設所有參數都是字符串。 如果您使用其他類型,則會爲您執行一些隱式解析。我寧願明確執行解析,因爲我不知道隱式解析是如何工作的。

+0

謝謝Gary將更新我的functoid中的代碼並測試 – isir

+0

感謝Gary我已將代碼更新爲你已經提供了什麼,它的工作感謝您的幫助 – isir

+0

@isir很高興我能提供幫助。如果確實有幫助,請不要忘記在stackoverflow中接受這個答案。 –

0

如果確實XS:布爾,你可以這樣做:

public MyFunctoid(string MyParam) 
{ 
    if(MyParam == "true") 
    { 
      return "It was true!"; 
    } 
    return "It was false!"; 
} 

這是因爲MyParam的值可以是隻有3件事,「真」,「假」或「」。你只需要測試'真'。這是不需要[Try]解析的一種情況。

相關問題