7 validation designer workflow-foundation-4
我不清楚何时以及如何在WF 4.0中的自定义活动/自定义活动工厂/自定义设计器中进行验证.
我的活动中唯一似乎提供验证错误支持的地方是在CacheMetadata方法中(我相信在设计过程中会多次调用它).这是我应该进行验证的地方吗?ActivityDesigner中是否支持验证?
是的,您的活动中的 CacheMetadata 是您应该进行验证的地方。验证是一个适用于工作流运行时和设计者的概念。(您可以从以下事实中看出这一点:您仍然可以尝试运行具有验证错误的已编译或声明式工作流程,但这样做时会抛出异常。)
例子:
protected override void CacheMetadata(ActivityMetadata metadata)
{
if (this.Body == 0) metadata.AddValidationError(
new ValidationError(
"You forgot to supply a body for (this activity)",
/*iswarning = */ true,
"Body"));
}
Run Code Online (Sandbox Code Playgroud)
(参见ActivityMetadata.AddValidationError)
您的第二个问题是是否支持从 ActivityDesigner 端添加验证?答案是“不,不是真的” - 可以进行一些自定义 WPF 和数据绑定,在 ActivityDesigner 之上添加一些“自定义验证”,甚至可以使用 AttachedPropertiesService 在活动类上定义您自己的 SatisfiesConstraints 属性。但这是额外的工作,并且不会与运行时验证一致地配合,因此这是一个价值有限的想法。
| 归档时间: |
|
| 查看次数: |
1701 次 |
| 最近记录: |