我需要从BizTalk映射中的脚本functoid调用外部程序集中的方法,特别是Enumerated类型是C#程序集中的参数。这甚至可能吗?我已经传入字符串或整数,同时多次调用外部程序集没有任何问题。
答案 0 :(得分:1)
不幸的是,您不能在设计为从脚本functoid调用的方法中使用枚举类型。但是,通过围绕外部方法创建包装器,您几乎可以实现所需的目的。
例如,无法直接从脚本functoid调用以下方法。
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枚举类型。如果你有想要调用的方法的源代码,只需添加这个额外的包装器并重载,你就完成了。