Share via


Validação classe base imperativa

A validação classe base imperativa fornece uma maneira simples para uma atividade fornece validação sobre se, e está disponível para as atividades que derivam de CodeActivity, de AsyncCodeActivity, e de NativeActivity. O código de validação que determina os erros ou avisos de validação é adicionado à atividade.

Usando a validação classe base

a validação classe base é suportada por atividades que derivam de CodeActivity, de AsyncCodeActivity, e de NativeActivity. O código de validação pode ser colocado em uma substituição de CacheMetadata , e os erros ou avisos de validação podem ser adicionados ao argumento de metadados. No exemplo a seguir, se Cost é maior do que Price, um erro de validação é adicionado aos metadados.

Observação

Observe que Cost e Price não são argumentos a atividade, mas é propriedades que são definidas em tempo de design. É por isso que seus valores podem ser validados em uma substituição de CacheMetadata . O valor dos dados que correm através de um argumento não pode ser validado em tempo de design porque os dados não usam até o tempo de execução, mas os argumentos de atividade podem ser validados para garantir que estão associados usando os grupos de atributo e a sobrecarga de RequiredArgument . Esse código de exemplo considera o atributo de RequiredArgument para o argumento de Description , e se não está associado em um erro de validação é gerado. Os argumentos necessários são abordados em Argumentos Necessários e Grupos de Sobrecarga.

public sealed class CreateProduct : CodeActivity  
{  
    public double Price { get; set; }  
    public double Cost { get; set; }  
  
    // [RequiredArgument] attribute will generate a validation error
    // if the Description argument is not set.  
    [RequiredArgument]  
    public InArgument<string> Description { get; set; }  
  
    protected override void CacheMetadata(CodeActivityMetadata metadata)  
    {  
        base.CacheMetadata(metadata);  
        // Determine when the activity has been configured in an invalid way.  
        if (this.Cost > this.Price)  
        {  
            // Add a validation error with a custom message.  
            metadata.AddValidationError("The Cost must be less than or equal to the Price.");  
        }  
    }  
  
    protected override void Execute(CodeActivityContext context)  
    {  
        // Not needed for the sample.  
    }  
}  

Por padrão, um erro de validação é adicionado aos metadados quando AddValidationError é chamado. Para adicionar um aviso de validação, use a sobrecarga de AddValidationError que leva ValidationError, e especifica que ValidationError representa um aviso definindo a propriedade de IsWarning .

A validação ocorre quando um trabalho são alterados no designer de trabalho e todos os erros ou avisos de validação são exibidos no designer de fluxo de trabalho. Validação também ocorre em tempo de execução quando um fluxo de trabalho é chamado e se qualquer erro de validação ocorre, InvalidWorkflowException é acionada pela lógica padrão de validação. Para obter mais informações sobre como invocar a validação e acessar quaisquer avisos ou erros de validação, consulte Invocando a Validação da Atividade.

Nenhuma exceções que são geradas de CacheMetadata não são tratados como erros de validação. Essas exceções escaparão de chamada para Validate e devem ser tratadas pelo chamador.

a validação classe base é útil para validar a atividade que contém o código, mas não tem a visibilidade nas outras atividades no fluxo de trabalho. A validação declarativamente restrições fornece a capacidade para validar as relações entre uma atividade e outras atividades no fluxo de trabalho, e é abordado no tópico Restrições declarativas.