Вызовите метод с параметрами объекта из функтоида сценариев BizTalk.

Мне нужно вызвать метод во внешней сборке из скриптового функтоида на карте BizTalk, в частности тип Enumerated является параметром в сборке C#. Это вообще возможно? Я передал строки или целые числа при вызове внешних сборок много раз без проблем.

1 ответ

Решение

К сожалению, вы не можете использовать перечисляемые типы в методах, предназначенных для вызова из скриптового функтоида. Тем не менее, вы можете почти достичь того, что вы хотите, создав оболочку для внешнего метода.

Например, следующий метод не может быть вызван напрямую из скриптового функтоида.

using System;

namespace ExternalAssembly
{
    public enum Options
    {
        OptionNumberOne,
        OptionNumberTwo,
    }

    public class Helper
    {
        public string DoSomething(Options option)
        {
            // really do something useful here
            return String.Empty;
        }
    }
}

Попытка использовать этот метод приведет к следующей ошибке:

Функция "ScriptNS0:DoSomething()" не выполнена. Значение было слишком большим или слишком маленьким для Int32.

Однако, если вы напишите следующий метод-обертку, если работает:

    public string DoSomething(string option)
    {
        return Helper.DoSomething(
              (Options) Enum.Parse(typeof(Options), option)
            );
    }

Обратите внимание, что метод-оболочка использует обычный параметр String вместо исходного перечисляемого типа Options. Если у вас есть исходный код для метода, который вы хотите вызвать, просто добавьте эту дополнительную оболочку as и перегрузите, и все готово.

Другие вопросы по тегам