Как проверить значение свойства в действии WCF?

Я новичок в рабочем процессе 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; }
}

Теперь я хотел бы проверить, что пользователь установил в этом свойстве, когда использует конструктор. Например, если он компилирует рабочий процесс, есть ли обратный вызов при компиляции рабочего процесса, чтобы я мог сгенерировать ошибку компиляции? Или какой-либо обратный вызов проверки целостности?

Спасибо за помощь.


person Baptiste Pernet    schedule 28.11.2012    source источник


Ответы (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
    ...
}
person Baptiste Pernet    schedule 29.11.2012