Мне нужно вызвать метод во внешней сборке из функтоида сценариев в карте BizTalk, в частности, тип Enumerated является параметром в сборке C#. Это вообще возможно? Я без проблем передал строки или целые числа при вызове внешних сборок много раз.
Вызов метода с объектными параметрами из функтоида сценариев BizTalk.
Ответы (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. Если у вас есть исходный код метода, который вы хотите вызвать, просто добавьте эту дополнительную оболочку как и перегрузите, и все готово.