1

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

4

1 回答 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 回答