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

问题描述 投票:0回答:2

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

但是,现在我尝试评估属性何时为null。我在我的工作流程中有争论,比方说,'MyArgument'。在转换过程中,我试图设置一个像'MyArgument.MyProperty = Nothing'这样的条件。我从来没有在VB.NET中开发,我不知道我在这里遗漏了什么...

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

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

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

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

谢谢你的帮助!

.net vb.net workflow-foundation
2个回答
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。


0
投票

我正在解决类似的问题,检查变量是否为null。我的解决方案是:

  1. 声明额外的局部变量: <Sequence.Variables变量x:TypeArguments =“x:Boolean”默认=“False”Name =“MyBooleanProperty”/> </Sequence.Variables>
  2. 检查MyVariable(字符串数组)是否为空: <mtbwe:IsNotNull x:TypeArguments =“s:String []”sap2010:WorkflowViewState.IdRef =“IsNotNull`1_1”Result =“MyBooleanProperty”“Value =”[MyVariable]“/>
  3. 在条件中使用MyBooleanProperty: <如果Condition =“[MyBooleanProperty AndAlso MyVariable.Count> 0]”DisplayName =“如果MyVariable不为空”sap2010:WorkflowViewState.IdRef =“If_35”>
  4. mtbwe是对WF表达式库的引用: <xmlns:mtbwe =“clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Expressions; assembly = Microsoft.TeamFoundation.Build.Workflow”>
© www.soinside.com 2019 - 2024. All rights reserved.