1

BizTalkマップのスクリプト関数から外部アセンブリのメソッドを呼び出す必要があります。特に列挙型はC#アセンブリのパラメーターです。これも可能ですか?外部アセンブリを何度も呼び出している間、問題なく文字列または整数を渡しました。

4

1 に答える 1

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)
            );
    }

ラッパーメソッドは、元のOptions列挙型ではなく、通常のStringパラメーターを使用していることに注意してください。呼び出したいメソッドのソースコードがある場合は、この余分なラッパーを追加してオーバーロードするだけで完了です。

于 2010-12-31T12:03:32.470 に答える