子アクティビティのデザイナーの 1 つから、デザイン サーフェイス (この場合は Visual Studio) 内のワークフローを検証したいと考えています。後で設計エクスペリエンスを簡素化するために、他のエラーが修正されるまで、ユーザーが先に進めないようにしたいと考えています。
単純な実装は機能しません:
var activity = (this.ModelItem.Root.GetCurrentValue() as ActivityBuilder)
.Implementation as Activity;
var validationResult = ActivityValidationServices.Validate(activity);
if (validationResult.Errors.Count > 0))
{
MessageBox.Show("The Workflow is invalid. Fix it.", "Derp");
return;
}
問題は、ActivityBuilder (Activityではなく、 に渡すことができない)に、ワークフローのルートで定義されたValidate
すべての変数と引数が含まれていることです。そのため、ルート ( ) の最初の子を検証しようとすると、Implementation
これらへのバインディングが失敗するため、無効なエラーが発生します。
Implementation
キャリア アクティビティ (たとえば、シーケンス) に を追加し、ActivityBuilder にあるすべての変数と引数をキャリアに追加するという提案されたハックを見てきました。
これは臭い。
より良い方法はありますか?