从 .NET Framework 3.0 更改到 .NET Framework 3.5 的通用规则

某些规则功能在 .NET Framework 3.0 和 .NET Framework 3.5 之间已发生更改。下表详细列出了这些更改:

  • 在规则操作中,表述可以为 null 的类型大于 空引用(在 Visual Basic 中为 Nothing) 时,在 .NET Framework 3.0 的规则引擎中,比较的计算结果始终为 true。在 .NET Framework 3.5 中,此计算结果为 false,这与 C# 中的行为相同。若要在 .NET Framework 3.0 中解决此问题,将可以为 null 的类型与任何值比较之前,必须对 空引用(在 Visual Basic 中为 Nothing) 执行自定义检查。
  • 自定义条件在设计时告诉规则引擎将在运行时返回哪种类型的条件。在 .NET Framework 3.0 中,允许自定义条件在运行时返回与设计时指定的不同的类型。在 .NET Framework 3.5 中,此方案将失败。
  • 在 .NET Framework 3.0 中,将 stringchar 数据类型串联在一起将生成错误结果。例如,如果您将 string 的“s”与 char 的“c”串联起来,则生成的串联结果将为“s43”。在 .NET Framework 3.5 中,串联的结果为“sc”。若要在 .NET Framework 3.0 中获取正确的行为,请在串联之前将任何 char 数据类型强制转换为 string
  • 在 .NET Framework 3.0 中,使用逻辑运算符(如 | 和 &)在两个可以为 null 的 bool 数据类型之间进行比较时,如果其中一个 bool 设置为 空引用(在 Visual Basic 中为 Nothing),则将返回 空引用(在 Visual Basic 中为 Nothing)。此行为与在 C# 规范中定义的行为不同。在 .NET Framework 3.5 中,在两个布尔值之间的比较行为现在匹配在 C# 3.0 规范(可能为英文网页)中定义的行为。若要在 .NET Framework 3.0 中获取正确行为,您必须对可以为 null 的 bool 数据类型执行自定义检查。如果您要在规则定义中重新使用 C# 代码,必须更改 C# 代码以适应 C# 和 WF 规则之间的行为差异。
  • 在 .NET Framework 3.0 中,您对自定义规则条件中的 ActivityExecutionContext 对象没有访问权;但是在 .NET Framework 3.5 中,您有访问权。

另请参见

其他资源

.NET Framework 3.5 中的规则改动

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。