我想知道是否可以将Lambda表达式作为参数传递给Windows工作流代码活动?
我正在尝试基于lambda表达式查询ldap用户对象,该表达式将作为参数传递给Windows工作流代码活动。
答案 0 :(得分:1)
lambda表达式只是一个引用,就像传递任何其他数据一样传递它。
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;
}
}