共用方式為


RuleAction 類別

定義

表示抽象類別 (Abstract Class),定義如果相關聯的 Condition 評估為 true (對於 ThenActions),或 false (對於 ElseActions),所要執行的動作。 這個類別必須被繼承。

public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
繼承
RuleAction
衍生
屬性

範例

下列程式碼會建立可用於規則集的動作。 動作命名為 Log,並採用單一參數,此參數必須評估為字串。 這個動作會輸出字串至主控台。

若要使用這個程式碼,請將它加入類別庫 (Class Library) 專案,並參考工作流程專案中的程式庫。

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();  
        }  
    }  
}  

備註

RuleStatementAction 物件 (可以當做 ThenActionsElseActions) 通常在活動的其中一個屬性上設定變數值、呼叫活動的方法,或呼叫參考組件中型別上的靜態方法。

RuleActionRuleStatementActionRuleHaltActionRuleUpdateAction 類別從中衍生的基底型別 (Base Type)。 這些類別的用法如下:

建構函式

RuleAction()

在衍生類別中實作時,初始化 RuleAction 類別的新執行個體。

方法

Clone()

建立目前 RuleAction 的深層複本。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Execute(RuleExecution)

使用指定的 RuleAction 執行個體來執行 RuleExecution

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetSideEffects(RuleValidation)

傳回 RuleAction 更新的欄位和屬性。

GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
Validate(RuleValidation)

驗證 RuleAction 已正確設定,而且沒有任何錯誤。

適用於