2016-09-15 14 views
0

Я имею вопрос о моем BizTalk приложенииМоего BizTalk functoid возвращает истинное значение, независимо от логического значения передается

Я настроил functoid, чтобы изменить значение на основе логического значения он получил ее это код

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

У меня возникла проблема, что значение всегда возвращает истинное значение. Я использую BizTalk server 2013 R2

+0

Да, известная проблема с BizTalk 2013 и выше, сделайте то, что предложил Гэри, и рассматривайте их как строки. – Dijkgraaf

+0

Удерживайте, как я уже упоминал в вашем другом потоке, нам нужно знать тип исходного узла. Да, это может иметь значение. –

+0

См. Известные проблемы в BizTalk Server 2013 https://support.microsoft.com/en-gb/kb/2954101 Известные проблемы в XSLCompiledTransform – Dijkgraaf

ответ

0

Измените тип param1 от bool до строки. Внимательно проанализируйте его внутри функции boolean и используйте это логическое значение, чтобы решить, что вернуть.

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

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

При использовании встроенного C# в скриптовый functoid, я всегда нахожу это проще предположить, что все параметры являются строками. Если вы используете другой тип, для вас будет выполнен неявный синтаксический разбор. Я бы предпочел выполнить парсинг явным образом, потому что я не знаю точно, как работает неявный синтаксический анализ.

+0

Спасибо, Гэри обновит код в моем functoid и test – isir

+0

Спасибо, Гэри, я обновил свой код как к тому, что вы предоставили, и это помогает спасибо за помощь – isir

+0

@isir Рад, что я мог бы помочь. Не забудьте принять этот ответ в stackoverflow, если он вам поможет. –

0

Если это действительно хз: логическое значение, вы можете сделать:

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

Это происходит потому, что значение MyParam может быть один из только 3 вещи, «истина», «ложь» или «». Тебе нужно только проверить «правда». Это один случай, когда [Try] Parse не требуется.