Вызовите метод с параметрами объекта из функтоида сценариев BizTalk. - PullRequest
1 голос
/ 29 декабря 2010

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

1 Ответ

1 голос
/ 31 декабря 2010

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

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

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 и перегрузите, и все готово.

...