0

私はWindowsワークフローに本当に慣れていないので、アクティビティを作成する必要があります。私はそれをしました:

class CustomActivity : Activity { }

このアクティビティにはカスタムプロパティがあり、私はそれを行いました:

class CustomActivity : Activity 
{
    /// <summary>
    /// Creation of the Value Property.
    /// </summary>
    [Description("The value of the property to set")]
    [Category("Configuration")]
    [Browsable(true)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    public string Value { get; set; }
}

ここで、ユーザーがデザイナーを使用するときにこのプロパティに何を設定したかを確認したいと思います。たとえば、彼がワークフローをコンパイルする場合、ワークフローのコンパイル時にコールバックがあるので、コンパイルエラーが発生する可能性がありますか?または、整合性チェックのコールバックはありますか?

助けてくれてありがとう。

4

1 に答える 1

1

WFのドキュメントを読んで解決策を見つけました。とても簡単です:

バリデータ オブジェクトを作成します。

class CustomActivityValidator : ActivityValidator
{
    public override ValidationErrorCollection ValidateProperties(ValidationManager manager, object obj)
    {
        if (null == manager)
        {
            throw new ArgumentNullException("manager");
        }

        if (null == obj)
        {
            throw new ArgumentNullException("obj");
        }

        CustomActivity activity = obj as CustomActivity;
        if (null == activity)
        {
            throw new ArgumentException("This validator can only be used by the CustomActivity", "obj");
        }

        ValidationErrorCollection errors = base.ValidateProperties(manager, obj);
        if (null != activity.Parent)
        {
            // Now actually validate the activity...
            if (activity.Value != "foobar")
            {
                ValidationError err = new ValidationError("This must be only foobar", 100, false, "Value");
                errors.Add(err);
            }
        }

        return errors;
    }
}

そして、このバリデーターをアクティビティクラスにバインドします

[ActivityValidator(typeof(CustomActivityValidator))]
class CustomActivity : Activity
{
    // Your activity code here
    ...
}
于 2012-11-29T17:27:44.307 に答える