
3.2.6 GenericValue
泛(GenericValue)型是UiPath独有的一种数据类型,可以用于存储任何类型的数据,例如Boolean型、Int32型、String型、DateTime型。
UiPath有一个GenericValue变量的自动转换机制,GenericValue变量会自动转换为其他类型以执行某些操作。但是在实际项目中,我们要谨慎地使用GenericValue型变量,因为它们的转换可能并不总是正确的。
GenericValue变量的自动转换机制就是将表达式中定义的第一个元素作为执行操作的准则,可以通过定义表达式来指导实现所需的结果。如果表达式中的第一个元素是整数或值为整数的GenericValue变量,结果将返回两个元素的和;如果表达式中的第一个元素是字符串或值为字符串的GenericValue变量,结果将返回两个元素连起来的值。如例3.11所示。
【例3.11】使用GenericValue变量完成打印员工号的流程。员工号由两部分组成,第一部分为入职年份,第二部分为一个4位数的入职编号。已知一名员工为2021年入职,入职编号为0068,将该员工的员工号在Output面板中输出。
具体实现步骤如下所示。
1)进入Studio界面,点击Process创建一个新流程,命名为3_11_GenericValue,如图3-98所示。

图3-98 新建流程
2)拖入一个Sequence活动到设计器面板。在Properties面板中,将Sequence活动的DisplayName属性更改为“取得员工号”,如图3-99所示。

图3-99 拖入Sequence活动并更改属性
3)在Variables面板中创建变量OnboardDate、OnboardNo及SerialNo,用于存储入职年份、入职编号和员工号,如图3-100所示。

图3-100 创建变量
4)将上一步创建的变量更改为GenericValue型,依次在Variable type下拉列表选择Browse for Types...选项,如图3-101所示。
5)系统随即会显示Browse and Select a .Net Type对话框,在Type Name字段中输入GenericValue,在结果中选择UiPath.Core.GenericValue后点击OK按钮,如图3-102所示。

图3-101 更改变量类型

图3-102 选择GenericValue类型
6)三个变量都更改为GenericValue型后,为变量OnboardDate设置默认值为数值2021,为变量OnboardNo设置默认值为字符串"0068",Variables面板如图3-103所示。

图3-103 更改变量类型后的Variables面板
7)拖入一个Assign活动到“取得员工号”活动中。在Properties面板中,将Display-Name属性更改为“合成员工号”,在To属性中输入变量SerialNo,在Value属性中输入OnboardDate+OnboardNo,如图3-104所示。

图3-104 合成员工号
8)拖入一个Write Line活动到“取得员工号”活动中。在Properties面板中,将DisplayName属性更改为“输出员工号”,在Text属性中输入变量SerialNo,如图3-105所示。

图3-105 输出员工号
9)按F5键执行流程,将在Output面板中显示执行结果,发现输出的员工号结果错误,如图3-106所示。

图3-106 执行结果
10)这是由于“合成员工号”活动的表达式OnboardDate+OnboardNo中,第一个元素的值为整数,结果将返回两数的和,因此我们将表达式更改为OnboardDate.ToString+OnboardNo,如图3-107所示。

图3-107 更改合成员工号的表达式
11)按F5键再次执行流程,将在Output面板中显示正确的执行结果,如图3-108所示。

图3-108 执行结果