不能在 wf4 xaml 活动中使用“me”或“this”关键字之类的内容

本文关键字:关键字 this me wf4 xaml 活动中 不能 | 更新日期: 2023-09-27 18:30:41

我们实现了一个类ActivityException,其中构造函数接受(除其他外)类型为System.Activities.Activity的参数。此参数用于创建包含 Activity.DisplayNameActivity.Id 的错误消息。

这对于用 C# 编写的 WF4 活动非常有效。在这里,我可以使用以下内容:

throw new ActivityException(this, ...)

但现在我正在实现 xaml 格式的 WF4 活动(即使用工作流编辑器)。如果我在这里抛出异常,我必须使用 System.Activities.Statements.Throw 活动。我按如下方式填写了此活动的Exception参数:

new ActivityException(Me, ...)

但工作流编辑器说:"'我'仅在实例方法中有效"。

我也尝试了"这个"而不是"我",但这也会产生错误消息。

有人知道如何解决这个问题吗?

不能在 wf4 xaml 活动中使用“me”或“this”关键字之类的内容

例如,如果表单名称是 MainWindow,您可以执行以下操作: MainWindow mw = new MainWindow; new ActivityException(mw, ...)

即使这样的事情最终奏效,您尝试访问Me也将是Thrown活动,而不是任何其他活动。此外,您似乎正在使用异常来记录某些内容(?这不是你做这种事情的方式。

不知道你想做什么,我建议你退后一步,考虑其他方法。两个选项:

1) 创建您自己的活动,该活动接收所述 DisplayName 并抛出异常:

public class ThrownActivityException : CodeActivity
{
    [RequiredArgument]
    public InArgument<string> ActivityDisplayName { get; set; }
    public override void Execute(CodeActivityContext context)
    {
        var displayName = ActivityDisplayName.Get(context);
        throw new ActivityException(displayName);
    }
}

2)第二种选择,可能是你想要的。考虑到您尝试访问运行时信息(活动的 Id)以进行日志记录,请检查工作流跟踪及其功能。