Да, 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"));
}
(См. ActivityMetadata.AddValidationError )
Ваш дополнительный вопрос: есть ли поддержка для добавления проверки со стороны ActivityDesigner? Ответ «нет, не совсем» - можно было бы сделать некоторую настраиваемую WPF и привязку данных, которая добавляет некоторую «настраиваемую проверку» поверх ActivityDesigner, возможно, даже использовать AttachedPropertiesService, чтобы определить собственное свойство SatisfiesConstraints в вашем классе активности , Но это дополнительная работа, и она не будет постоянно связываться с валидацией во время выполнения, так что это идея с ограниченным значением.