|
using System;
namespace Light
{
/// <summary>
/// Context object for firing triggers.
/// </summary>
public sealed class TriggerContext
{
private Actions action;
private Dao dao;
private string message;
private bool failed = false;
private object[] objarray;
/// <summary>
/// Creates a new instance.
/// </summary>
/// <param name="dao">context owner</param>
internal TriggerContext(Dao dao)
{
this.dao = dao;
}
/// <summary>
/// Gets the context owner - Dao object.
/// </summary>
public Dao Dao
{
get { return dao; }
}
/// <summary>
/// Gets or sets the triggering action.
/// </summary>
public Actions TriggeringAction
{
get { return action; }
internal set { action = value; }
}
/// <summary>
/// Returns this object wrapped in an object array.
/// </summary>
internal object[] AsObjectArray
{
get
{
if(objarray == null)
objarray = new object[] { this };
return objarray;
}
}
/// <summary>
/// Gets whether one of the triggers called
/// with this context failed.
/// </summary>
internal bool Failed
{
get { return failed; }
}
/// <summary>
/// Gets the failure message returned by the last failed trigger.
/// </summary>
internal string Message
{
get { return message; }
}
/// <summary>
/// Reset this context to a non-failed state.
/// </summary>
internal void Reset()
{
failed = false;
message = null;
}
/// <summary>
/// Triggers should call this method to signal that this context
/// should not execute any more triggers (if any) and should
/// rollback the transaction. The caller (transaction initiator)
/// will get an exception with given message.
/// </summary>
/// <param name="message">message explaining why the trigger failed</param>
public void Fail(string message)
{
failed = true;
this.message = message;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.