JD2022-TU1/main/tools/framework/JD.TeaBoxAddinSystem/Addins/Description/Conditions/CompositeCondition.cs

108 lines
2.6 KiB
C#

using System;
using System.Text;
namespace JD.TeaBoxAddinSystem.Addins.Description.Conditions
{
/// <summary>
/// Base class for composite conditions.
/// </summary>
public abstract class CompositeCondition : Condition
{
#region Variables
private readonly Condition[] m_innerConditions;
#endregion
#region Constructor
/// <summary>
/// Constructor.
/// </summary>
/// <param name="innerConditions">Inner conditions.</param>
protected CompositeCondition(params Condition[] innerConditions)
{
m_innerConditions = innerConditions;
if (m_innerConditions == null)
{
m_innerConditions = new Condition[0];
}
}
#endregion
#region Properties
/// <summary>
/// Inner Conditions.
/// </summary>
public Condition[] InnerConditions
{
get
{
return m_innerConditions;
}
}
/// <summary>
/// Separator used for ToString().
/// </summary>
protected virtual string Separator
{
get
{
return string.Empty;
}
}
#endregion
#region Methods
internal override void GetConditionNodeDescriptions(System.Collections.Generic.IList<ConditionNodeDescription> listToFill)
{
foreach (Condition condition in InnerConditions)
{
condition.GetConditionNodeDescriptions(listToFill);
}
}
internal override void OnModuleChanged(EventArgs e)
{
foreach (Condition condition in InnerConditions)
{
condition.Module = Module;
}
base.OnModuleChanged(e);
}
/// <summary>
/// Overriden.
/// </summary>
/// <returns></returns>
public override string ToString()
{
StringBuilder builder = new StringBuilder();
builder.Append('[');
foreach (Condition condition in InnerConditions)
{
builder.Append(condition);
builder.AppendFormat(" {0} ", Separator);
}
if (InnerConditions.Length > 0)
{
int length = Separator.Length + 2;
builder.Remove(builder.Length - length, length);
}
builder.Append(']');
return builder.ToString();
}
#endregion
}
}