在Workflow 4.0转换条件中检查null变量

时间:2012-02-27 09:28:10

标签: .net vb.net workflow-foundation

我在WF 4.0中实现了状态机。在某些转换中,我添加了一个条件,我检查某些变量是否具有预期值。变量是枚举和布尔值,一切都很好。

但是,现在我尝试评估属性何时为null。我在工作流程中有争论,让我们说,' MyArgument' 。在过渡期间,我尝试设置一个类似' MyArgument.MyProperty = Nothing '的条件。我从未在VB.NET中开发过,我不知道我是否在这里遗漏了一些东西...

VS2010给出以下错误:" 错误4编译器错误遇到处理表达式" MyArg.MyProp = Nothing"。 运营商' ='未定义类型' XXXX'和' XXXX'

类型名称完全相同,我调试了VS2010以确保我的程序集没有从2个不同的位置加载。

有人遇到同样的问题吗?我有什么遗失的东西吗?如何检查属性是否为空?

顺便说一句,我在W7 64位上使用安装了.NET平台更新1的VS2010 SP 1。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我不确定这是否能回答你的问题,因为我认为我的情况与你的不同。如果不必要地重复你已经精通的事情,我会道歉。

我有一个工作流程范围的变量,我将调用" WorkflowXvariable"。我有一个名为" CustomActivity"的自定义活动。要在CustomActivity的代码中与WorkflowXvariable进行交互,我必须先做两件事: 1)在CustomActivity类中创建一个属性,我将用它来引用WorkflowX。我打电话给这个" ActivityXproperty"。 2)在可视化设计器中,在CustomActivity实例的属性网格中,我将ActivityXProperty设置为WorkflowXVariable。

WorkflowXvariable可能为null。在CustomActivity的代码中,我可以测试一下:

if(ActivityXproperty == null)   返回;

我发现了你的帖子,因为我希望能够检查ActivityXproperty是否未设置为WorkflowXvariable,因为它应该是 - 它的"表达式"没什么。我还没有确定一种方法,比如检查Activity.Expression是否为null。

是否因为ActivityXproperty的表达式未设置为任何内容,或者因为WorkflowXvariable为null,我可以测试的是ActivityXproperty是否为null。

答案 1 :(得分:0)

我正在通过检查变量是否为null来解决类似的问题。 我的解决方法是:

  1. 声明额外的局部变量:

  2. 检查MyVariable(字符串数组)是否不为空:

  3. 在if条件下使用MyBooleanProperty:

    0]” DisplayName =“如果MyVariable不为空” sap2010:WorkflowViewState.IdRef =“ If_35”>

  4. mtbwe是对WF表达式库的引用: