1

Lambda 式をパラメーターとして Windows ワークフロー コード アクティビティに渡すことができるかどうか疑問に思っていますか?

パラメータとして Windows ワークフロー コード アクティビティに渡されるラムダ式に基づいて、ユーザー オブジェクトの LDAP をクエリしようとしています。

4

1 に答える 1

1

ラムダ式は単なる参照であり、他のデータと同じように渡します。

class Program
{
    static void Main(string[] args)
    {
        var workflow = new ExecuteFunc<int>();
        var inputs = new Dictionary<string, object>();
        inputs["Func"] = new Func<int, int>(maxValue =>
        {
            var rnd = new Random(Environment.TickCount);
            return rnd.Next(maxValue);
        });
        inputs["MaxValue"] = 100;
        WorkflowInvoker.Invoke(workflow, inputs);
    }
}

public class ExecuteFunc<T> : CodeActivity<T>
{
    public InArgument<int> MaxValue { get; set; }
    public InArgument<Func<int, T>> Func { get; set; }

    protected override T Execute(CodeActivityContext context)
    {
        var func = Func.Get(context);
        var maxValue = MaxValue.Get(context);
        var result = func(maxValue);
        Console.WriteLine(result);
        return result;
    }
}
于 2012-10-27T08:30:25.610 に答える