从BizTalk脚本functoid调用具有对象参数的方法

时间:2010-12-29 15:35:53

标签: c# biztalk biztalk-2009

我需要从BizTalk映射中的脚本functoid调用外部程序集中的方法,特别是Enumerated类型是C#程序集中的参数。这甚至可能吗?我已经传入字符串或整数,同时多次调用外部程序集没有任何问题。

1 个答案:

答案 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枚举类型。如果你有想要调用的方法的源代码,只需添加这个额外的包装器并重载,你就完成了。