Dela via


Imperativ Code-Based validering

Imperativ kodbaserad validering är ett enkelt sätt för en aktivitet att tillhandahålla verifiering om sig själv och är tillgänglig för aktiviteter som härleds från CodeActivity, AsyncCodeActivityoch NativeActivity. Verifieringskod som avgör eventuella valideringsfel eller varningar läggs till i aktiviteten.

Använda Code-Based validering

Kodbaserad validering stöds av aktiviteter som härleds från CodeActivity, AsyncCodeActivityoch NativeActivity. Verifieringskoden kan placeras i åsidosättningen CacheMetadata och valideringsfel eller varningar kan läggas till i metadataargumentet. I följande exempel, om Cost är större än Price, läggs ett valideringsfel till i metadata.

Anmärkning

Observera att Cost och Price inte är argument för aktiviteten, men är egenskaper som anges vid designtillfället. Därför kan deras värden valideras i override CacheMetadata. Värdet för data som flödar genom ett argument kan inte verifieras vid designtillfället eftersom data inte flödar förrän körtiden, men aktivitetsargumenten kan verifieras för att säkerställa att de är bundna med hjälp av RequiredArgument-attributet och överbelastningsgrupper. I den här exempelkoden ses RequiredArgument-attributet för argumentet Description, och om det inte är bundet genereras ett verifieringsfel. Obligatoriska argument beskrivs i obligatoriska argument och överlagringsgrupper.

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.  
    }  
}  

Som standard läggs ett valideringsfel till i metadata när AddValidationError anropas. Om du vill lägga till en valideringsvarning använder du den AddValidationError överlagring som tar ValidationError och anger att ValidationError representerar en varning genom att ställa in IsWarning-egenskapen.

Validering sker när ett arbetsflöde ändras i arbetsflödesdesignern och eventuella valideringsfel eller varningar visas i arbetsflödesdesignern. Validering sker också vid körning när ett arbetsflöde anropas och om några valideringsfel inträffar genereras ett InvalidWorkflowException av standardvalideringslogik. Mer information om hur du anropar validering och åtkomst till valideringsvarningar eller -fel finns i Anropa aktivitetsverifiering.

Undantag som genereras från CacheMetadata behandlas inte som valideringsfel. Dessa undantag kommer att fly från anropet till Validate och måste hanteras av anroparen.

Kodbaserad validering är användbar för att verifiera aktiviteten som innehåller koden, men den har inte insyn i de andra aktiviteterna i arbetsflödet. Validering av deklarativa begränsningar ger möjlighet att verifiera relationerna mellan en aktivitet och andra aktiviteter i arbetsflödet och beskrivs i avsnittet Deklarativa begränsningar .