1

我想知道 Lambda 表达式是否可以作为参数传递给 Windows 工作流代码活动?

我正在尝试根据 lambda 表达式查询 ldap 的用户对象,该表达式将作为参数传递给 Windows 工作流代码活动。

4

1 回答 1

1

lamda 表达式只是一个参考,像传递任何其他数据一样传递它。

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