技术开发 频道

在Visual Studio中实现If/Else逻辑设计

  【IT168 技术文档】在前面的练习中,你学会了如果使用自定义的问好消息建立一个Hello Workflow程序。在这个练习中,你将会添加在工作流中添加If/Else逻辑 ,使之更具用户的状态显示不同消息。

  这个练习将会采用测试优先的方法,首先为新要求编写一个测试,然后实现需要的代码使测试通过。

  1.打开解决方案

  你可以使用练习6中建立的解决方案作为这个练习的起始方案。或者你可以根据以下步骤开始练习7。

  (1)选择Start | All Programs | Microsoft Visual Studio 2010以运行Microsoft Visual Studio 2010。

  (2)打开%TrainingKitInstallFolder%\Labs\ IntroToWF\Ex7-????\Begin目录下的练习7 的起始方案以开始这个练习。

  (3)按CTRL+SHIFT+B键编译解决方案。

  2.为新需求建立测试

  我们的程序有一个新的需求。如果名称是奇数个字母,我们就使用“Greetings”来问候,否则使用“Hello”来问候“”“”。以下是一个和工作流功能相同的代码范例。

  private static string SayHello(string userName)

  {

  
string FirstWord = null;

  
if (userName.Length % 2 == 0)

  FirstWord
= "Hello";

  
else

  FirstWord
= "Greetings";

  
return FirstWord + ", " + userName +" from Workflow 4";

  }

 

  (1)建立一个测试来验证新的需求。首先打开HelloWorkflow.Test 项目中的SayHelloTests.cs文件 (C#)或SayHelloTests.vb (Visual Basic)并加入下列代码

  [TestMethod]

  
public void ShouldReturnGreetingWithOddLengthName()

  {

  var output
= WorkflowInvoker.Invoke(

  
new SayHello() { UserName = "Odd" });

  
string greeting = output["Greeting"].ToString();

  Assert.AreEqual(
"Greetings Odd from Workflow 4", greeting);

  }

 

  (2)右键单击测试方法并选择Run Tests ( )。测试将会失败,因为你还没有修改工作流使根据情况其返回不同的问号消息。


ShouldReturnGreetingWithOddLengthName测试失败

  3.在工作流中实现新的需求

  (1)在Solution Explorer中双击SayHello.xaml文件,将它打开。

  (2)添加名为FirstWord的变量用于储存问候消息的第一个单词为"Hello"或"Greetings"。按照如下步骤:

  ·单击选择Sequence活动。

  ·单击Variables按钮。弹出一个显示当前Sequence活动中有效变量的窗口。

  ·单击Create Variable.

  ·在Name输入框中输入FirstWord。


在Sequence中添加类型为String的FirstWord变量

  在Windows Workflow Foundation (WF)中,变量用于存储数据。参数则是用于表示活动的输入输出数据流。同C#或Visual Basic一样,变量存在域的概念。如果你在打开变量设计窗口时没有选中任何活动,你将不能添加任何变量。被选中的活动将会提供变量的域。在这个例子中FirstWord属于Sequence域。

  (3)现在你需要检测UserName 变量,以确定它的字母数为偶数或奇数。首先在工具栏中选中Control Flow组,拖放If 活动到Sequence中,位于Assign活动的上方。

  (4)单击选中If设计器图形,按F4设定If活动的DisplayName 为If UserName is Even。或者你可以在属性窗口中设置。

  注意:工作流设计器允许你通过改变DisplayName给活动图形设定一个更易读的名称。


有描述设定的If活动

  注意

  红色的图标 ( )表示当前活动没有正确配置。If活动需要你为其Condition参数设置表达式。

  (5)为If活动设置条件。首先双击以展开If活动,在Condition输入框中输入下列表达式。它将检查名称长度为奇数还是偶数。

  Visual Basic

  UserName.Length Mod 2 = 0

  表达式是一种程序片断,它可以使一个常量字符串、一个条件语句、几个字符串的连接、调用一个方法或调用其它的活动。 即使你的程序使用C#,表达式依旧使用Visual Basic语法。这意味着不区分大小写,使用单个等于号表示 “==”,并使用单词"And"和"Or"表示"&&"符号"||"。

  (6)对于名字长度为偶数的情况,修改FirstWord变量的值为”Hello”。在工具栏中选中Primitives组,拖放Assign活动到Then区域中。之后在To输入框(左边)中输入FirstWord,在Value输入框(右侧)中输入”Hello”。

  (7)对名字长度为奇数的情况,修改FirstWord变量的值为”Greetings”。在工具栏中选中Primitives组,拖放Assign活动到Then区域中。之后在To输入框(左边)中输入FirstWord,在To输入框(左侧)中输入”Greeting”。


一个完整的If活动

  (8)修改最终的Assign使自定义的消息基于FirstWord的值显示。修改If活动下方的Assign 活动,将Value输入框(右侧)的内容设置为下面的表达式:

  FirstWord & UserName _

  
& " from Workflow 4"

 


一个完整的工作流

  (9)按CTRL+SHIFT+B编译解决方案

0
相关文章