Aracılığıyla paylaş


RuleAction Sınıf

Tanım

İlişkili Condition için , ThenActionsveya falseElseActionsiçin olarak değerlendirilirse yürütülecek eylemi tanımlayan soyut sınıfı temsil edertrue. Bu sınıf devralınmalıdır.

public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
Devralma
RuleAction
Türetilmiş
Öznitelikler

Örnekler

Aşağıdaki kod, kural kümelerinde kullanılabilecek bir eylem oluşturur. Eylem olarak adlandırılır Logve bir dize olarak değerlendirmesi gereken tek bir parametre alır. Bu eylem, dizeyi Konsol'a gönderir.

Bu kodu kullanmak için bir Sınıf Kitaplığı projesine ekleyin ve iş akışı projenizdeki kitaplığa başvurun.

using System;  
using System.CodeDom;  
using System.Collections.Generic;  
using System.Text;  
using System.Workflow.Activities.Rules;  
using System.Workflow.ComponentModel.Compiler;  

namespace LogRuleAction  
{  
    public class Log : RuleAction  
    {  
        CodeExpression message;  

        public CodeExpression Message  
        {  
            get { return message; }  
            set { message = value; }  
        }  

        public Log()  
        {  
            // constructor required for deserialization  
        }  

        public Log(CodeExpression expression)  
        {  
            // constructor required by parser  
            message = expression;  
        }  

        public override bool Validate(RuleValidation validator)  
        {  
            ValidationError error;  
            if (message == null)  
            {  
                error = new ValidationError("Message cannot be null", 123);  
                validator.Errors.Add(error);  
                return false;  
            }  
            else  
            {  
                RuleExpressionInfo result = RuleExpressionWalker.Validate(validator, message, false);  
                if ((result == null) || (result.ExpressionType != typeof(string)))  
                {  
                    error = new ValidationError("Message must return string result", 123);  
                    validator.Errors.Add(error);  
                    return false;  
                }  
            }  
            return (validator.Errors.Count == 0);  
        }  

        public override RuleAction Clone()  
        {  
            Log result = new Log();  
            result.Message = RuleExpressionWalker.Clone(message);  
            return result;  
        }  

        public override void Execute(RuleExecution context)  
        {  
            RuleExpressionResult result = RuleExpressionWalker.Evaluate(context, message);  
            if (result != null)  
                Console.WriteLine(result.Value);  
        }  

        public override ICollection<string> GetSideEffects(RuleValidation validation)  
        {  
            RuleAnalysis analysis = new RuleAnalysis(validation, true);  
            if (message != null)  
                RuleExpressionWalker.AnalyzeUsage(analysis, message, true, false, null);  
            return analysis.GetSymbols();  
        }  

        public override string ToString()  
        {  
            // what should be displayed by the parser  
            StringBuilder result = new StringBuilder("Log(");  
            RuleExpressionWalker.Decompile(result, message, null);  
            result.Append(")");  
            return result.ToString();  
        }  
    }  
}  

Açıklamalar

RuleStatementAction nesneleri (hem hem de ThenActionsElseActionsolarak kullanılabilir) genellikle etkinliğin özelliklerinden birinde bir değişken değeri ayarlar, etkinliğin bir yöntemini çağırır veya başvurulan derlemelerdeki türlerde statik yöntemler çağırır.

RuleAction, RuleHaltActionve RuleUpdateAction sınıflarının türetilen RuleStatementActiontemel türdür. Bu sınıfların kullanımları aşağıdaki gibidir:

  • bir RuleStatementAction özelliği değiştirir veya bir yöntemi çağırır.

  • A RuleHaltAction , yürütmeyi RuleSet durdurmasına neden olur ve denetimi çağıran yönteme döndürür.

  • bir RuleUpdateAction kuralın bir değişkeni güncelleştirdiğini açıkça gösterir. Bu, etkilenen kuralların yeniden değerlendirilmesine neden olur.

Oluşturucular

RuleAction()

Türetilmiş bir sınıfta uygulandığında, sınıfının yeni bir örneğini RuleAction başlatır.

Yöntemler

Clone()

Geçerli RuleActionöğesinin derin bir kopyasını oluşturur.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Execute(RuleExecution)

Belirtilen RuleExecution örneği kullanarak öğesini RuleAction yürütür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetSideEffects(RuleValidation)

tarafından RuleActiongüncelleştirilen alanları ve özellikleri döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
Validate(RuleValidation)

öğesinin RuleAction doğru yapılandırıldığını ve hatasız olduğunu doğrular.

Şunlara uygulanır