RuleAction 类

定义

表示一个抽象类,该抽象类定义关联的 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,使用一个参数,该参数的计算结果必须为字符串。 此操作将字符串输出到控制台。

若要使用此代码,请将它添加到类库项目并从工作流项目中引用该库。

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)通常对活动的一个属性设置变量值、调用活动的一个方法或对引用的程序集中的类型调用静态方法。

RuleAction 是派生 RuleStatementActionRuleHaltActionRuleUpdateAction 类的基本类型。 这些类的用法如下所述:

构造函数

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 是否已正确配置且没有错误。

适用于