我需要从 BizTalk 映射中的脚本函数调用外部程序集中的方法,特别是枚举类型是 C# 程序集中的参数。这甚至可能吗?我在多次调用外部程序集时传入了字符串或整数,没有任何问题。
问问题
1961 次
1 回答
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 枚举类型。如果您有要调用的方法的源代码,只需添加这个额外的包装器并重载就可以了。
于 2010-12-31T12:03:32.470 回答